Introduce

Spring IoC ์ปจํ…Œ์ด๋„ˆ์™€ ๋นˆ ์†Œ๊ฐœ

Spring Framework๋Š” ์ œ์–ด์˜ ์—ญ์ „(Inversion of Control, IoC) ์›์น™์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

IoC์˜ ํŠน์ˆ˜ํ•œ ํ˜•ํƒœ๋กœ์„œ ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection, DI)์€ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ์ž ์ธ์ž, ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ์˜ ์ธ์ž, ๋˜๋Š” ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ์—์„œ ๋ฐ˜ํ™˜๋œ ํ›„์— ์„ค์ •๋˜๋Š” ์†์„ฑ์„ ํ†ตํ•ด์„œ๋งŒ ์˜์กด์„ฑ์„ ์ •์˜ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

IoC ์ปจํ…Œ์ด๋„ˆ๋Š” ๋นˆ์„ ์ƒ์„ฑํ•  ๋•Œ ์ด๋Ÿฌํ•œ ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

org.springframework.beans์™€ org.springframework.context ํŒจํ‚ค์ง€๋Š” Spring Framework์˜ IoC ์ปจํ…Œ์ด๋„ˆ์˜ ๊ธฐ์ดˆ๋ฅผ ์ด๋ฃน๋‹ˆ๋‹ค.

BeanFactory ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์–ด๋–ค ์ข…๋ฅ˜์˜ ๊ฐ์ฒด๋“  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ๊ธ‰ ๊ตฌ์„ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • Spring์˜ AOP ๊ธฐ๋Šฅ๊ณผ์˜ ์‰ฌ์šด ํ†ตํ•ฉ

  • ๊ตญ์ œํ™”๋ฅผ ์œ„ํ•œ ๋ฉ”์‹œ์ง€ ๋ฆฌ์†Œ์Šค ์ฒ˜๋ฆฌ

  • ์ด๋ฒคํŠธ ๋ฐœํ–‰

  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” WebApplicationContext์™€ ๊ฐ™์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต๋ณ„ ํŠน์ • ์ปจํ…์ŠคํŠธ

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, BeanFactory๋Š” ๊ตฌ์„ฑ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ , ApplicationContext๋Š” ๋” ๋งŽ์€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํŠน์ • ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

ApplicationContext๋Š” BeanFactory์˜ ์™„์ „ํ•œ ์ƒ์œ„ ์ง‘ํ•ฉ์ด๋ฉฐ, ์ด ์žฅ์—์„œ๋Š” Spring์˜ IoC ์ปจํ…Œ์ด๋„ˆ ์„ค๋ช…์— ApplicationContext๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Spring์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ค‘์ถ”๋ฅผ ํ˜•์„ฑํ•˜๊ณ  Spring IoC ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ๋นˆ(bean)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋นˆ์€ Spring IoC ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ์ธ์Šคํ„ด์Šคํ™”๋˜๊ณ  ์กฐ๋ฆฝ๋˜๋ฉฐ ๊ด€๋ฆฌ๋˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ๋นˆ์€ ๋‹จ์ˆœํžˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋งŽ์€ ๊ฐ์ฒด ์ค‘ ํ•˜๋‚˜์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๋นˆ๊ณผ ๊ทธ๋“ค ๊ฐ„์˜ ์˜์กด์„ฑ์€ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ์„ฑ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.

Last updated