Bean
์คํ๋ง ๊ณต์ ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด, ์ดํ๋ฆฌ์ผ์ด์
์ ๋ฐฑ๋ณธ์ ํ์ฑํ๊ณ Spring IoC ์ปจํ
์ด๋์ ์ํด ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด๋ค์ Bean์ด๋ผ๊ณ ๋ถ๋ฆ
๋๋ค. ์ฆ, Spring IoC ์ปจํ
์ด๋์ ์ํด ๊ด๋ฆฌ๋๊ณ ์ธ์คํด์คํ๋๊ณ ์กฐ๋ฆฝ๋๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํฉ๋๋ค. ๋จ์ํ๊ฒ๋ ํ์ฌ ์ดํ๋ฆฌ์ผ์ด์
์ ์๋ง์ ๊ฐ์ฒด๋ค ์ค ํ๋๊ฐ Bean์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
Spring IoC Container
์คํ๋ง IoC ์ปจํ
์ด๋๋ ์ ์ด์ ์ญ์ (Inversion of Control, IoC) ๊ฐ๋
์ ๊ฐ์ง๋ฉฐ ์ด๋ Bean์ ์ธ์คํด์คํ ํ๊ณ , ๊ตฌ์ฑํ๋ฉฐ ์กฐ๋ฆฝ(assemble)ํ๋ ์ญํ ์ ํฉ๋๋ค. ๊ทธ ์ค์์๋ IoC์ ํน์ํ ํํ(Specialized form of IoC)์ธ ์์กด์ฑ ์ฃผ์
(Dependency Injection, ID)์ ์์ฑ์, ํด๋์ค ์์ฑ ๋ฐ Setter, factory ๋ฉ์๋๋ฅผ ํตํด ์ปจํ
์ด๋์์ Bean์ผ๋ก ๋ง๋ ๊ฐ์ฒด๋ค์ ๊ฐ๋ฐ์๊ฐ ์ํ๋ ๊ณณ์ ์ฃผ์
ํด์ค๋๋ค. ์ฆ, IoC ์ปจํ
์ด๋๋ ์ดํ๋ฆฌ์ผ์ด์
๋ด์ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ Bean์ผ๋ก ๊ด๋ฆฌํ๋ฉฐ Bean๋ค๊ฐ์ ์์กด์ฑ ์ฃผ์
๋ฑ์ ์ญํ ์ ์ํํฉ๋๋ค.

BeanFactory
์คํ๋ง ๋น ์ปจํ
์ด๋์ ์ ๊ทผํ๊ธฐ ์ํ ์ต์๋จ์ ์ธํฐํ์ด์ค์
๋๋ค. ์คํ๋ง IoC ์ปจํ
์ด๋์ ๊ทผ๊ฐ์ด ๋๋ ์ธํฐํ์ด์ค๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค. BeanFactory๋ ๋น ์์ฑ, ์๋ช
์ฃผ๊ธฐ ๊ด๋ฆฌ, ์์กด์ฑ ์ฃผ์
๋ฑ์ ๋ด๋นํ๋ฉฐ ์ธ์คํด์คํ ํ Bean์ ๋ํ ์ ๋ณด, ๊ตฌ์ฑ์์๋ฅผ Configuration metadata๋ฅผ ์ฝ์ด ๊ตฌ์ฑํฉ๋๋ค. Configuration metadata๋ ์ธ๋ถ XML ํ์ผ, Groovy ์คํฌ๋ฆฝํธ ํน์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ํฌํจํ Configuration ํด๋์ค, @Component ํด๋์ค๋ก ๋ํ๋ผ ์ ์์ต๋๋ค.
ApplicationContext
org.springframework.context.ApplicationContext ์ธํฐํ์ด์ค๋ BeanFactory๋ฅผ ์์ํ๋ฉฐ ์คํ๋ง IoC ์ปจํ
์ด๋๋ฅผ ๋ํํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด ์ธํฐํ์ด์ค๋ ์คํ๋ง IoC ์ปจํ
์ด๋์ด๊ธฐ์ Bean๋ค์ ์ธ์คํด์คํ ํ๊ณ , ์ค์ ํ๊ณ ์กฐ๋ฆฝํ๋ ๊ฒ์ ๋ด๋นํฉ๋๋ค. ์ฌ๊ธฐ๊น์ง๋ง ๋ณด๋ฉด BeanFactory์ ๋ฌด์จ ์ฐจ์ด๊ฐ ์๋์ถ์ต๋๋ค. ํ์ง๋ง, ApplicationContext๋ BeanFactory์ ๊ธฐ๋ฅ์ ํฌํจํ ๋ง์ ๋ถ๊ฐ ๊ธฐ๋ฅ๋ค์ ์ถ๊ฐ๋ก ์ ๊ณตํฉ๋๋ค. ์คํ๋ง ๊ณต์ ๋ฌธ์์์๋ Bean Processing์ ๋ํ ์์ ํ ์ ์ด๊ฐ ํ์์น ์์ผ๋ฉด ApplicationContext๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๊ธธ ๊ถ์ฅํ๊ณ ์์ต๋๋ค.
- ์คํ๋ง AOP ๊ธฐ๋ฅ๋ค์ ์์ฌ์ด ํตํฉ
- ๋ฉ์์ง ๋ฆฌ์์ค ๊ด๋ฆฌ (๊ตญ์ ํ๋ฅผ ์ํด)
- ์ด๋ฒคํธ ๋ฐ์์
- ์น ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๊ธฐ ์ํ WebApplicationContext์ ๊ฐ์ ์ดํ๋ฆฌ์ผ์ด์ ๊ณ์ธต ํน์ Context

Configuration Metadata
์คํ๋ง IoC ์ปจํ
์ด๋๋ Configuration Metadata์ ํ์๊ณผ ์์ ๋ถ๋ฆฌ๋์ด ์์ต๋๋ค. ๊ณต์ ๋ฌธ์๋ ์ค๋๋ ๋ง์ ๊ฐ๋ฐ์๋ค์ด Java-based configuration์ ์ ํํ๊ณ ์๋ค๊ณ ํฉ๋๋ค.
- Annotation-based Configuration
- Java-based Configuration
Annotation-based Configuration
ํด๋น ๊ธฐ๋ฅ์ Spring 2.5์ ์ถ๊ฐ๋์์ผ๋ฉฐ ํ์ํ XML ๊ตฌ์ฑ์ ์์ ์ค์ผ ์ ์๋๋ก ํ์์ต๋๋ค. ๋น์ ๊ตฌ์ฑ์์๋ฅผ XML์ ์์ฑํ๋ ๋์ ์ ๊ด๋ จ ํด๋์ค๋ ๋ฉ์๋, ํ๋์ ๋ํด์ ์ด๋ ธํ ์ด์ ์ ์ด์ฉํ์ฌ ๋น ๊ตฌ์ฑ์์๋ฅผ Component ํด๋์ค์ ์์ฑํ ์ ์๋๋ก ํ ๊ฒ์ด ํน์ง์ ๋๋ค. ๋์ Spring์ Bean auto scan๊ณผ ๊ฐ์ ์์๋ค์ ์ฌ์ ํ XML ํ์ผ์ ์์ฑํด์ ์๋ ค์ค์ผ ํ๋ค๋ ๋จ์ ์ด ์์์ต๋๋ค.

์ด๋ฌํ, xml ํ์ผ์ ์์ฑ ํ <context:component-scan base-package="ํจํค์ง ๊ฒฝ๋ก" /> ์ ๊ฐ์ ํ๊ทธ๋ฅผ ์ถ๊ฐํ๋ฉด Bean์ผ๋ก ๋ฑ๋กํ๊ณ ์ ํ๋ ํด๋์ค์ @Component ์ด๋
ธํ
์ด์
๋ง ๋ถ์ฌ๋ ํด๋น ํด๋์ค๋ฅผ ๊ฐ์ฒด๋ก ์์ฑํด Bean์ผ๋ก ๋ฑ๋กํด์ฃผ์๋ ๊ฒ์
๋๋ค. ํ์ฌ ์ด๋ฅผ ์์ ํ ๋์ฒดํ ๊ฒ์ด ๋ฐ๋ก Java-based Configuration์
๋๋ค. ์ด ๋ถ๋ถ์ ๋ํด์ ์์ ์ ๊น์ํ์จ ๊ฐ์์์ ํ๋ฒ ๋ค์๋ ๊ฒ ๊ฐ์๋ฐ ์ ๊ธฐ์ต์ ์๋๋ค์.
Java-based Configuration
์๋ฐ ๊ธฐ๋ฐ Configuration์ ์คํ๋ง 3.0์ ์ถ๊ฐ๋์์ผ๋ฉฐ @Configuration ์ด๋ ธํ ์ด์ ์ ํตํด Spring IoC ์ปจํ ์ด๋์ ํด๋์ค๊ฐ Bean์ผ๋ก ๋ฑ๋ก๋์ด์ผ ํจ์ ์ง์ ์ ์ํ ์ ์์ผ๋ฉฐ @ComponentScan๊ณผ ๊ฐ์ ์ด๋ ธํ ์ด์ ๋ ์ ๊ณตํฉ๋๋ค.

'๊ฐ๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
MVC ํจํด (3) | 2024.10.15 |
---|---|
๋์ ํ๋ผ๋ฏธํฐํ ์ฝ๋ ์ ๋ฌํ๊ธฐ (6) | 2024.10.10 |
์คํ๋ง ๋ถํธ๋ฅผ ์ด์ฉํ ํ์ด์ง ๊ตฌํ (3) | 2024.09.27 |
JWT ํ ํฐ์ ์ด์ฉํ ๋ก๊ทธ์ธ ๋ฐฉ๋ฒ ์ดํด (5) | 2024.09.15 |