๋ฐ˜์‘ํ˜•

์Šคํ”„๋ง์€ ์ž๋ฐ”์ฝ”๋“œ๊ฐ€ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜์ง€์•Š๊ณ  ์ปจํ…Œ์ด๋„ˆ(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] ์˜ˆ์ œ


๋‚˜์ž์‹ ์ด ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค์–ด๋ด„.

DI_test.zip



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 : ํด๋ž˜์Šค๋ฅผ ์Šคํ”„๋ง์„ค์ •์œผ๋กœ ์‚ฌ์šฉํ•จ




์ฐธ๊ณ  : http://asfirstalways.tistory.com/334

๋ฐ˜์‘ํ˜•

'๊ฐœ๋ฐœ > 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

+ Recent posts