๐Ÿ’‰DI(Dependency Injection)

๊น€๋™์œคยท2023๋…„ 7์›” 25์ผ
post-thumbnail

โญ๏ธDI๋ž€?

์™ธ๋ถ€์—์„œ ๋‘ ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๊ฒฐ์ •ํ•ด์ฃผ๋Š” ๋””์ž์ธ ํŒจํ„ด์ค‘ ํ•˜๋‚˜.
์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ , ์œ ์—ฐํ•˜๊ณ  ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

โญ๏ธSpring Bean์„ ๋“ฑ๋กํ•˜๋Š” ๋ฒ•

1.์ปดํฌ๋„ŒํŠธ ์Šค์บ”๊ณผ ์ž๋™ ์˜์กด๊ด€๊ณ„ ์„ค์ •
2.์ž๋ฐ” ์ฝ”๋“œ๋กœ ์ง์ ‘ ์Šคํ”„๋ง ๋นˆ ๋“ฑ๋กํ•˜๊ธฐ

โญ๏ธ์ปดํฌ๋„ŒํŠธ ์Šค์บ”๊ณผ ์ž๋™ ์˜์กด๊ด€๊ณ„ ์„ค์ •



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

@Component ์• ๋…ธํ…Œ์ด์…˜์ด ์žˆ์œผ๋ฉด ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ์ž๋™ ๋“ฑ๋ก๋œ๋‹ค.
@Controller ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ์ž๋™ ๋“ฑ๋ก๋œ ์ด์œ ๋„ ์ปดํฌ๋„ŒํŠธ ์Šค์บ” ๋•Œ๋ฌธ์ด๋‹ค.
@Component ๋ฅผ ํฌํ•จํ•˜๋Š” ๋‹ค์Œ ์• ๋…ธํ…Œ์ด์…˜๋„ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ์ž๋™ ๋“ฑ๋ก๋œ๋‹ค.
@Controller
@Service
@Repository

โญ๏ธ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์ง์ ‘ ์Šคํ”„๋ง ๋นˆ ๋“ฑ๋กํ•˜๊ธฐ

์—ฌ๊ธฐ์„œ๋Š” ํ–ฅํ›„ ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋‹ค๋ฅธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ๋ณ€๊ฒฝํ•  ์˜ˆ์ •์ด๋ฏ€๋กœ, ์ปดํฌ๋„ŒํŠธ ์Šค์บ” ๋ฐฉ์‹ ๋Œ€์‹ ์— ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์Šคํ”„๋ง ๋นˆ์„ ์„ค์ •ํ•˜๊ฒ ๋‹ค.

  • DI์—๋Š” ํ•„๋“œ ์ฃผ์ž…, setter ์ฃผ์ž…, ์ƒ์„ฑ์ž ์ฃผ์ž… ์ด๋ ‡๊ฒŒ 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์˜์กด๊ด€๊ณ„๊ฐ€ ์‹คํ–‰์ค‘์— ๋™์ ์œผ๋กœ ๋ณ€ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†์œผ๋ฏ€๋กœ ์ƒ์„ฑ์ž ์ฃผ์ž…์„ ๊ถŒ์žฅํ•œ๋‹ค.

  • ์‹ค๋ฌด์—์„œ๋Š” ์ฃผ๋กœ ์ •ํ˜•ํ™”๋œ ์ปจํŠธ๋กค๋Ÿฌ, ์„œ๋น„์Šค, ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ฐ™์€ ์ฝ”๋“œ๋Š” ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์„ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ •ํ˜•ํ™” ๋˜์ง€ ์•Š๊ฑฐ๋‚˜, ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ตฌํ˜„ ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋ฉด ์„ค์ •์„ ํ†ตํ•ด ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•œ๋‹ค.

  • @Autowired ๋ฅผ ํ†ตํ•œ DI๋Š” helloController , memberService ๋“ฑ๊ณผ ๊ฐ™์ด ์Šคํ”„๋ง์ด ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด์—์„œ๋งŒ ๋™์ž‘ํ•œ๋‹ค. ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•˜์ง€ ์•Š๊ณ  ๋‚ด๊ฐ€ ์ง์ ‘ ์ƒ์„ฑํ•œ ๊ฐ์ฒด์—์„œ๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.

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