[Spring] - ๐ŸŒฑ Spring IoC ์™€ DI๋ž€?

army246ยท2022๋…„ 6์›” 2์ผ
0

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
4/7

IoC(Inversion of Control : ์ œ์–ด์˜ ์—ญ์ „)

  • ์Šคํ”„๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ์˜์กด ๊ด€๊ณ„ ์„ค์ •, ์‚ฌ์šฉ, ์ œ๊ฑฐ ๋“ฑ์„ ์ฝ”๋“œ ๋Œ€์‹  ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค.
    ์ด๋ฅผ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ฝ”๋“œ ๋Œ€์‹ ์— ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ œ์–ด๊ถŒ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค๊ณ  ํ•ด์„œ IoC๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
    ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ฅผ IoC ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.
  • ๊ฐ์ฒด๊ฐ€ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ๋Š” Bean์ด๋ผ๋ฉด @Autowired ๋ฅผ ํ†ตํ•ด์„œ ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
    ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ณ  ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ง์ ‘ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ œ์–ดํ•˜๋ฉฐ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ฃผ์ž… ์‹œ์ผœ์ค€๋‹ค. ์ด๊ฒŒ ๋ฐ”๋กœ ์ œ์–ด์˜ ์—ญ์ „๋˜์—ˆ๋‹ค๋Š” IoC์˜ ๊ฐœ๋…์ด๋‹ค.

DI(Dependency Injection : ์˜์กด์„ฑ ์ฃผ์ž…)

  • ์Šคํ”„๋ง์ด ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์ฐจ๋ณ„ํ™”๋˜์–ด ์ œ๊ณตํ•˜๋Š” ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž… ๊ธฐ๋Šฅ์ด๋‹ค.
    ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์™ธ๋ถ€์—์„œ ์ƒ์„ฑํ•œ ํ›„ ์ฃผ์ž… ์‹œ์ผœ์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.
    DI๋กœ ์ธํ•ด์„œ ๋ชจ๋“ˆ ๊ฐ„ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ์•„์ง€๊ณ  ์œ ์—ฐ์„ฑ์ด ๋†’์•„์ง„๋‹ค.

์˜์กด ๊ฐ์ฒด ์ฃผ์ž… ๋ฐฉ๋ฒ•

  • Constructor๋ฅผ ์ด์šฉํ•œ ์˜์กด ๊ฐ์ฒด ์ฃผ์ž…
<bean id="" class="">
	<constructor-arg ref=""></constructor-arg>
</bean>
  • setter๋ฅผ ์ด์šฉํ•œ ์˜์กด ๊ฐ์ฒด ์ฃผ์ž…
<bean id="" class"">
	<property name="" value=""></property>
</bean>
  • List ํƒ€์ž… ์˜์กด ๊ฐ์ฒด ์ฃผ์ž…
<bean id="" class="">
	<property name="">
    <list>
    	<value></value>
        <value></value>
        <value></value>
    </list>
    </property>
</bean>
  • Map ํƒ€์ž… ์˜์กด ๊ฐ์ฒด ์ฃผ์ž…
<bean>
	<property name="">
    	<map>
        	<entry>
            	<key><value></value></key>
                <value></value>
            </entry>
        </map>
    </property>
</bean>

์ฐธ๊ณ 

profile
์ฒœ์ฒœํžˆ ๊พธ์ค€ํžˆ

0๊ฐœ์˜ ๋Œ“๊ธ€