Spring

Spring ) DI, IoC ์ •๋ฆฌ

Albosa2lol 2023. 7. 14. 16:39

๐ŸŒฑDI(Dependency Injection)

DI(Dependency Injection)๋ž€ ์Šคํ”„๋ง์ด ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์ฐจ๋ณ„ํ™”๋˜์–ด ์ œ๊ณตํ•˜๋Š” ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž… ๊ธฐ๋Šฅ์œผ๋กœ,
๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์™ธ๋ถ€์—์„œ ์ƒ์„ฑํ•œ ํ›„ ์ฃผ์ž… ์‹œ์ผœ์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

DI(์˜์กด์„ฑ ์ฃผ์ž…)๋ฅผ ํ†ตํ•ด์„œ ๋ชจ๋“ˆ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ์•„์ง€๊ณ  ์œ ์—ฐ์„ฑ์ด ๋†’์•„์ง„๋‹ค.

 

 

  • ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ A๊ฐ์ฒด๊ฐ€ B์™€ C๊ฐ์ฒด๋ฅผ New ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด์„œ ์ง์ ‘ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๊ณ ,
  • ๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ์™ธ๋ถ€์—์„œ ์ƒ์„ฑ ๋œ ๊ฐ์ฒด๋ฅผ setter()๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์ด๋Ÿฌํ•œ ๋‘๋ฒˆ์งธ ๋ฐฉ์‹์ด ์˜์กด์„ฑ ์ฃผ์ž…์˜ ์˜ˆ์‹œ์ธ๋ฐ,

 

A ๊ฐ์ฒด์—์„œ B, C๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉ(์˜์กด)ํ•  ๋•Œ A ๊ฐ์ฒด์—์„œ ์ง์ ‘ ์ƒ์„ฑ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ 

์™ธ๋ถ€(IOC์ปจํ…Œ์ด๋„ˆ)์—์„œ ์ƒ์„ฑ๋œ B, C๊ฐ์ฒด๋ฅผ ์กฐ๋ฆฝ(์ฃผ์ž…)์‹œ์ผœ setter ํ˜น์€ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

 

์Šคํ”„๋ง์—์„œ๋Š” ๊ฐ์ฒด๋ฅผ Bean์ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ,

ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹คํ–‰๋ ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ Bean์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด๋“ค์˜ ์ƒ์„ฑ๊ณผ ์†Œ๋ฉธ์— ๊ด€๋ จ๋œ ์ž‘์—…์„ ์ž๋™์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์ฃผ๋Š”๋ฐ

๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ณณ์„ ์Šคํ”„๋ง์—์„œ๋Š” Bean ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 


๐ŸŒฑ Ioc(Inversion of Control)

IoC(Inversion of Control)๋ž€ "์ œ์–ด์˜ ์—ญ์ „" ์ด๋ผ๋Š” ์˜๋ฏธ๋กœ,

๋ง ๊ทธ๋Œ€๋กœ ๋ฉ”์†Œ๋“œ๋‚˜ ๊ฐ์ฒด์˜ ํ˜ธ์ถœ์ž‘์—…์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์™ธ๋ถ€์—์„œ ๊ฒฐ์ •๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

IoC๋Š” ์ œ์–ด์˜ ์—ญ์ „์ด๋ผ๊ณ  ๋งํ•˜๋ฉฐ, ๊ฐ„๋‹จํžˆ ๋งํ•ด "์ œ์–ด์˜ ํ๋ฆ„์„ ๋ฐ”๊พผ๋‹ค"๋ผ๊ณ  ํ•œ๋‹ค.

๊ฐ์ฒด์˜ ์˜์กด์„ฑ์„ ์—ญ์ „์‹œ์ผœ ๊ฐ์ฒด ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ์ค„์ด๊ณ  ์œ ์—ฐํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ๊ฐ€๋…์„ฑ ๋ฐ ์ฝ”๋“œ ์ค‘๋ณต, ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ํŽธํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

 

๊ธฐ์กด์—๋Š” ๋‹ค์Œ๊ณผ ์ˆœ์„œ๋กœ ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ์‹คํ–‰๋˜์—ˆ๋‹ค.

  1. ๊ฐ์ฒด ์ƒ์„ฑ
  2. ์˜์กด์„ฑ ๊ฐ์ฒด ์ƒ์„ฑ
    1. ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์ƒ์„ฑ
  3. ์˜์กด์„ฑ ๊ฐ์ฒด ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ

ํ•˜์ง€๋งŒ, ์Šคํ”„๋ง์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ์‹คํ–‰๋œ๋‹ค.

  1. ๊ฐ์ฒด ์ƒ์„ฑ
  2. ์˜์กด์„ฑ ๊ฐ์ฒด ์ฃผ์ž…
    1. ์Šค์Šค๋กœ๊ฐ€ ๋งŒ๋“œ๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ œ์–ด๊ถŒ์„ ์Šคํ”„๋ง์—๊ฒŒ ์œ„์ž„ํ•˜์—ฌ ์Šคํ”„๋ง์ด ๋งŒ๋“ค์–ด๋†“์€ ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•œ๋‹ค.
  3. ์˜์กด์„ฑ ๊ฐ์ฒด ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ

 

์Šคํ”„๋ง์ด ๋ชจ๋“  ์˜์กด์„ฑ ๊ฐ์ฒด๋ฅผ ์Šคํ”„๋ง์ด ์‹คํ–‰๋ ๋•Œ ๋‹ค ๋งŒ๋“ค์–ด์ฃผ๊ณ  ํ•„์š”ํ•œ๊ณณ์— ์ฃผ์ž…์‹œ์ผœ์คŒ์œผ๋กœ์จ 

Bean๋“ค์€ ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด์˜ ํŠน์ง•์„ ๊ฐ€์ง€๋ฉฐ,

 

์ œ์–ด์˜ ํ๋ฆ„์„ ์‚ฌ์šฉ์ž๊ฐ€ ์ปจํŠธ๋กค ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์Šคํ”„๋ง์—๊ฒŒ ๋งก๊ฒจ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.