๐Ÿ“˜ Programming/Spring

[Spring Framework] 3. ์˜์กด์„ฑ ์ฃผ์ž…(DI : Dependency Injection)์ด๋ž€? (1)

ํ•œ์ฝ”๋”ฉ 2021. 8. 7. 22:03
728x90
728x90

ํ•™์Šต ๋ชฉํ‘œ

1. '์˜์กด์„ฑ ์ฃผ์ž…' ๊ธฐ๋ณธ ๊ฐœ๋… ์ดํ•ด
2. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์™€ ApplicationContext ์ดํ•ด
3-1. XML ํŒŒ์ผ์„ ์ด์šฉํ•œ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ์„ค์ • ๋ฐฉ๋ฒ•
3-2. Annotation์„ ์ด์šฉํ•œ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ์„ค์ • ๋ฐฉ๋ฒ•
3-3. Java๋ฅผ ์ด์šฉํ•œ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ์„ค์ • ๋ฐฉ๋ฒ•
4. Bean ๊ฐ์ฒด์˜ Scope์™€ LifeCycle ์ดํ•ด

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

๋ฐฐ๊ฒฝ

  • ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ์‹œ, ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ ์กฐํ•ฉ์œผ๋กœ ๊ตฌํ˜„
    • DB ์ปดํฌ๋„ŒํŠธ, GUI ์ปดํฌ๋„ŒํŠธ, ์™ธ๋ถ€ ์ ‘์† ์ปดํฌ๋„ŒํŠธ ๋“ฑ...
  • ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ†ตํ•ฉ ์‹œ ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž… ๋””์ž์ธ ํŒจํ„ด์ด ๋งค์šฐ ํšจ๊ณผ์ 

์ •์˜

  • ๊ฐ์ฒด ๊ฐ„์˜ ์˜์กด ๊ด€๊ณ„๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ
  • ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋Ÿฐํƒ€์ž„ ์‹œ ์‚ฌ์šฉํ•  ๊ฐ์ฒด๋“ค์˜ ์˜์กด ๊ด€๊ณ„ ๋ถ€์—ฌ
  • ๊ฐ์ฒด ๊ฐ„ ๊ฒฐํ•ฉ๋„ ๋‚ฎ์ถค
  • IoC (Inversion of Control)
    • ์—ญ์ „ ์ œ์–ด
    • ์ธ์Šคํ„ด์Šค๋ฅผ ์ œ์–ดํ•˜๋Š” ์ฃผ๋„๊ถŒ์ด ์—ญ์ „
    • ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ๊ณผ ์˜์กด ๊ด€๊ณ„ ์—ฐ๊ฒฐ์„ ๊ฐœ๋ฐœ์ž์˜ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ DI ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋Œ€์‹ ํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ œ์–ด๊ฐ€ '์—ญ์ „๋˜์—ˆ๋‹ค'๊ณ  ์ •์˜
  • IoC ์ปจํ…Œ์ด๋„ˆ : ์ธ์Šคํ„ด์Šค์˜ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ ๋ฐ ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž… ์ฒ˜๋ฆฌ

์ผ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ์˜ ์˜์กด ๊ด€๋ฆฌ

  • MemberSampleMain์ด MemberService๋ฅผ new๋กœ ์ƒ์„ฑ
  • MemberService๊ฐ€ MemberDAO๋ฅผ new๋กœ ์ƒ์„ฑ
  • ๊ฐ๊ฐ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ํ˜•ํƒœ (Main → Service → DAO)

DI ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ™œ์šฉํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ - 1 (new ์—ฐ์‚ฐ์ž ์ œ๊ฑฐ)

  • ๊ฐ MemberService, MemberDAO ์ธ์Šคํ„ด์Šค๋Š” DI ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ
  • ์ฆ‰ MemberDAO ์ธ์Šคํ„ด์Šค๋ฅผ MemberService์— ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž…

DI ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ™œ์šฉํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ - 2 (์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋ฐ˜)

  • MemberService, MemberDAO๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ****ํ•จ
  • ๊ตฌํ˜„ ํด๋ž˜์Šค๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ด๋ฆ„์— Impl์„ ๋ง๋ถ™ํž˜

 

728x90
๋ฐ˜์‘ํ˜•