์คํ๋ง์ ์๋ฐ์ฝ๋๊ฐ ์ง์ ์ฒ๋ฆฌํ์ง์๊ณ ์ปจํ ์ด๋(ex. xmlํ์ผ ์ฃผ์ )๊ฐ ๋์ ์ฒ๋ฆฌ๋ฅผ ํด์ค. ---> IOC ๊ฐ๋ (์ ์ด์ ์ญ์ , ๋ฎ์ ๊ฒฐํฉ๋)
์ธ๋ถ์์๋ ๊ฐ์ฒด๋ฅผ ํ์ฌ๊ฐ์ฒด์ ์ฃผ์ ํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋์ถ ---> DI(์์กด์ฑ์ฃผ์ ) ๊ฐ๋
์ฆ,
(setter ์ฃผ์ ๋ฐฉ์)
AAA a = new AAA(); BBB b = new BBB(a); -- DI
(xml ์ฃผ์ ๋ฐฉ์ : ์์ฑ์ ํน์ ํ๋กํผํฐ)
xml์ ํด๋์ค ์์ฑ์๋ ํ๋กํผํฐ ๊ฐ์ ์ฃผ์ ํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ์์ธ๋ฏ (?)
๋ฌธ๋ฒ์ ์๋์ ๋์์์
+ ์ถ๊ฐ, (IOC/DI ๊ฒฐ๋ก )
๋ ๊ฐ์ ์ค๋ธ์ ํธ๋ฅผ ๋ถ๋ฆฌํด์ ๋ง๋ค๊ณ , ์ธํฐํ์ด์ค๋ฅผ ๋๊ณ ๋์จํ๊ฒ ์ฐ๊ฒฐํ ๋ค, ์ค์ ์ฌ์ฉํ ๋์์ DI๋ฅผ ํตํด ์ธ๋ถ์์ ์ง์
์ถ์ฒ: http://jinpyo900.tistory.com/55 [Computer Science ]
[1] ์์
๋์์ ์ด ์ดํดํ๊ธฐ ์ํด ์์ ๋ฅผ ๋ง๋ค์ด๋ด.
zip ํ์ผ์ ๋ํ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์๋ฐ...๋ญ ๊ทธ๋ฌํจ
๋ด๊ฐ ์ดํดํ๊ฑด ์ด์ ๋...??
Main ํด๋์ค์์...
String configLocation = "classpath:context_calc.xml"; //xml ๋ถ๋ฌ์ด AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation); CalcData calcdata = ctx.getBean("calcdata", CalcData.class); //xml์์ beans id๊ฐ calcdata๊ฐ๋จ calcdata.resultfunc(); //ํธ์ถํ๋ ๋ฉ์๋(๊ฒฐ๊ณผ) ctx.close();//๋
[2] xml ์ด์ฉํ DI์ค์
1) bean : ์คํ๋ง ์ปจํ ์ด๋๊ฐ ์์ฑํ ๊ฐ์ฒด์ ๋ํ ์ ๋ณด ์ง์ ์ ์ฌ์ฉ
<bean id="์ฐ๊ฒฐํ ์ด๋ฆ" class="ํจํค์ง๋ช .ํด๋์ค๋ช "></bean>
2) constructor-org : ์์ฑ์ ํ๋ผ๋ฏธํฐ ์ค์ ์ ์ฌ์ฉ
<bean id="์ฐ๊ฒฐํ ์ด๋ฆ" class="ํจํค์ง๋ช .ํด๋์ค๋ช "> <constructor-org value="aaa"/> // ---> new A("aaa"); ์ด๋ ๊ฒ๋จ </bean>
3) property : ํด๋น ๋น์ฆ ํด๋์ค๋ด์ setํ ๋ณ์, ํด๋์ค๋ฑ๋ฑ์ ์ ํ ํด์ค
<bean id="์ฐ๊ฒฐํ ์ด๋ฆ" class="ํจํค์ง๋ช .ํด๋์ค๋ช "> <property name="๋ณ์๋ช " value="1"/> <property name="๋ณ์๋ช "> <ref bean="๋ถ๋ฌ์จํด๋์ค๋ช ๋ณ์"/> </property> </bean> <bean id="๋ถ๋ฌ์จํด๋์ค๋ช ๋ณ์" class="ํจํค์ง๋ช .๋ถ๋ฌ์จํด๋์ค๋ช ๋ณ์"> </bean>
- list
- map
- set
- value
- ref
4) c ๋ค์์คํ์ด์ค, p๋ค์์คํ์ด์ค : C๋ construct-org, p๋ property ๋ค์ ์คํ์ด์ค
<bean id="์ฐ๊ฒฐํ ์ด๋ฆ" class="ํจํค์ง๋ช .ํด๋์ค๋ช " c:id="dsfd" p:id="fsdfs"/>5) import : ๋ค๋ฅธ xml ๋ถ๋ฌ์ฌ๋...
[3] Java ์ฝ๋๋ฅผ ์ด์ฉํ์ฌ DI์ค์ (์ด๋ ธํ ์ด์ ์ด์ฉ)
์ด๋ xml์ค์ ๋์ Java์ฝ๋๋ก ์ค์ ํ์์๋ ์๋์ ๊ฐ์ ํํ๋ก ๋ฉ์๋์์ ๋ถ์ฌ์ ์ฐ๋๋ถ๋ค. (@ : ์ ๋ ธํ ์ด์ )
1) @Configuration : ํด๋์ค๋ฅผ ์คํ๋ง์ค์ ์ผ๋ก ์ฌ์ฉํจ
'๊ฐ๋ฐ > spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํธ๋์ญ์ (0) | 2021.11.25 |
---|---|
Spring - ์คํ๋ง MVC ๊ฐ๋จ ์ ๋ฆฌ (0) | 2021.06.05 |
Spring - DI (Dependency Injection) (0) | 2021.06.01 |
Spring - AOP(Aspect-Oriented Programming) (0) | 2021.05.25 |
spring ์์, maven ์ค์น (0) | 2017.11.12 |