1. IoC Container

1-1. IoC & IoC Container ์ •์˜

1-1-1. IoC(Inversion of Control)๋ž€?

<aside> ๐Ÿ’ก ์ œ์–ด์˜ ์—ญ์ „(IoC, Inversion of Control)์€ ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ, ํ”„๋กœ๊ทธ๋žจ์˜ ์ œ์–ด ํ๋ฆ„ ๊ตฌ์กฐ๊ฐ€ ๋’ค๋ฐ”๋€Œ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

</aside>

โ‡’ ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ๊ด€๋ฆฌ, ๊ฐ์ฒด ๊ฐ„์˜ ์˜์กด์„ฑ ์ฒ˜๋ฆฌ ๋“ฑ์„ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋Œ€์‹  ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ๊ฒƒ์ด IoC์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ด๋‹ค.

1-1-2. IoC Container๋ž€?

<aside> ๐Ÿ’ก IoC Container๋Š” IoC๋ฅผ ๊ตฌํ˜„ํ•œ ๊ตฌ์ฒด์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งํ•œ๋‹ค. IoC Container๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ฒด์˜ ์ƒ์„ฑ, ์ดˆ๊ธฐํ™”, ์˜์กด์„ฑ ์ฒ˜๋ฆฌ ๋“ฑ์„ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

</aside>

โ‡’ ๋Œ€ํ‘œ์ ์ธ IoC Container๋กœ๋Š” Spring Framework์˜ ApplicationContext๊ฐ€ ์žˆ๋‹ค.

์บก์ฒ˜.PNG

1-2. Spring IoC Container

1-2-1. Bean์ด๋ž€?

<aside> ๐Ÿ’ก Bean์€ Spring IoC Container์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ๋งํ•œ๋‹ค.

</aside>

โ‡’ ์Šคํ”„๋ง์€ Bean์„ ์ƒ์„ฑํ•˜๊ณ , ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ์˜์กด์„ฑ ์ฃผ์ž…ํ•˜๊ณ , ์ œ๊ฑฐํ•˜๋Š” ๋“ฑ์˜ ์ผ์„ IoC Container๋ฅผ ํ†ตํ•ด ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

1-2-2. Bean Factory๋ž€?

<aside> ๐Ÿ’ก BeanFactory๋Š” Spring IoC Container์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ๋กœ, Bean์˜ ์ƒ์„ฑ, ์ดˆ๊ธฐํ™”, ์—ฐ๊ฒฐ, ์ œ๊ฑฐ ๋“ฑ์˜ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ๊ด€๋ฆฌํ•œ๋‹ค.

</aside>

โ‡’ ์ด๋ฅผ ์œ„ํ•ด Configuration Metadata๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

1-2-3. Configuration Metadata๋ž€?

<aside> ๐Ÿ’ก BeanFactory๊ฐ€ IoC๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์„ค์ • ์ •๋ณด์ด๋‹ค.

</aside>