Arthur's Blog
IoC ์ปจํ ์ด๋ ๋ณธ๋ฌธ
๐ ์ ์
IoC ์ปจํ ์ด๋, ์ดํ๋ฆฌ์ผ์ด์ ์ฝํ ์คํธ, ์คํ๋ง ์ปจํ ์ด๋, ์คํ๋ง, DI ์ปจํ ์ด๋ ๋ฑ ์ฌ๋ฌ ์ฉ์ด๋ก ๋ถ๋ฆฌ์ง๋ง ์ด ๊ธ์์๋ “IoC ์ปจํ ์ด๋” ๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ๊ฒ ๋ค.
๋ํ ํด๋น ๊ธ์์๋ xml์ค์ ์ด ์๋ java์ค์ ์ค๋ช ๋ง ์์์ ์ฃผ์ํ์.
โ IoC ์ปจํ ์ด๋๊ฐ ๋ญ์ผ?
๊ฐ๋จํ๊ฒ Bean๋ถํฐ ์๊ณ ๋์ด๊ฐ์ผํ๋ค. Bean์ ์คํ๋ง์ด ์ ์ด๊ถ์ ๊ฐ์ง๊ณ , ์ง์ ๋ง๋ค๊ณ ๊ด๊ณ๋ฅผ ๋ถ์ฌํ๋ ์คํ์ ํธ๋ฅผ ๋ปํ๋ค.
์คํ๋ง ๋น์ IoC ์ปจํ ์ด๋๊ฐ ์์ฑ, ๊ด๊ณ์ค์ , ์ฌ์ฉ ๋ฑ์ ์ ์ดํด์ฃผ๋ IoC๊ฐ ์ ์ฉ๋ ์ค๋ธ์ ํธ๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ง์ด๋ค.
๋ฐ๋ก ์์์ ์ธ๊ธํ๋ฏ์ด IoC ์ปจํ ์ด๋๋ ์คํ๋ง ๋น์ ์์ฑ, ๊ด๊ณ์ค์ , ์ฌ์ฉ ๋ฑ์ ์ ์ดํ๋ค.
โป IoC ์ปจํ ์ด๋์ ๋์๋ฐฉ์
๋จผ์ , @Configuration์ด ๋ถ์ Class์ @Bean์ด ๋ถ์ด์๋ method๋ฅผ ํธ์ถํ๊ณ , ๊ทธ ๋ฐํ๊ฐ์ IoC ์ปจํ ์ด๋์ ๋ฑ๋กํ๋ค. ๋ง์ฝ, A๋ผ๋ ์คํ๋ง Bean์ด ํ์ํ๋ฉด IoC ์ปจํ ์ด๋์ ์์ฒญ์ํ๊ณ , IoC ์ปจํ ์ด๋์ ๋น ๋ชฉ๋ก์์ A๋ฅผ ์กฐํํ๊ณ A๋ฅผ ์์ฑํ๋ @Bean๋ฉ์๋๋ฅผ ํธ์ถํด์ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ๋๋ ค์ค๋ค.
๐ ์ฅ์
IoC ์ปจํ ์ด๋๋ ์ฌ๋ฌ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋๋ฐ ๊ทธ์ค ๋ ๊ฐ์ง๋ง ์ถ๋ฆฌ์๋ฉด
- ํด๋ผ์ด์ธํธ์์ ์์กด์ฑ ๋ถ๋ฆฌ
- IoC ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ฉด, ํด๋ผ์ด์ธํธ์์ Factory class๋ฅผ ์ ํ์๊ฐ ์์ด์ง๋ค.
- IoC ์ปจํ ์ด๋์ ์ฌ๋ฌ ๊ธฐ๋ฅ
- IoC ์ปจํ ์ด๋๋ Bean Factory์ ๋ค๋ฅด๊ฒ Bean์ ์์ฑ๋ง ํด์ฃผ๋ ๊ฒ์ด ์๋๋ผ ์ด๋ ธํ ์ด์ ์ ํ์ฉํ ์ ์๊ณ , BeanPostProcessor์ ๋ฑ๋ก๋ ์๋์ผ๋ก ๋๋ ๋ฑ ์ฌ๋ฌ ์ฅ์ ์ด ์กด์ฌํ๋ค.
'Backend > Spring Boot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring AOP Proxy์ ๋์๋ฐฉ์๊ณผ ์ด์ (0) | 2023.08.10 |
---|---|
Spotless๋? (0) | 2023.07.04 |
Spring Bean์ ์ํ๋ฅผ ๊ฐ์ ธ๋ ๋๋๊ฐ? (0) | 2023.07.01 |
List์์ ๊ฐ์ Validation ํ๋ ๋ฒ (0) | 2023.07.01 |
Service ๊ตฌํ์ฒด๋ฅผ ์ถ์ํ ํ๋๊ฒ์ ๋ํด.. (0) | 2023.07.01 |