๋ฐ์ํ
์คํ๋ง ์ปจํ ์ด๋
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
ApplicationContext
๋ฅผ ์คํ๋ง ์ปจํ ์ด๋๋ผ ํ๋ค.- ์คํ๋ง ์ปจํ
์ด๋๋
@Configuration
์ด ๋ถ์ AppConfig๋ฅผ ์ค์ ์ ๋ณด๋ก ์ฌ์ฉํ๋ค. ์ฌ๊ธฐ์@Bean
์ด๋ผ ์ ํ ๋ฉ์๋๋ฅผ ๋ชจ๋ ํธ์ถํด์ ๋ฐํ๋ ๊ฐ์ฒด๋ฅผ ์คํ๋ง ์ปจํ ์ด๋์ ๋ฑ๋กํ๋ค. ์ด๋ ๊ฒ ์คํ๋ง ์ปจํ ์ด๋์ ๋ฑ๋ก๋ ๊ฐ์ฒด๋ฅผ ์คํ๋ง ๋น์ด๋ผ๊ณ ํ๋ค. - ์คํ๋ง ๋น์
@Bean
์ด ๋ถ์ ๋ฉ์๋์ ๋ช ์ ์คํ๋ง ๋น์ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ๋ค - ์คํ๋ง ๋น์
applicationContext.getBean()
๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ์ฐพ์ ์ ์๋ค - ์คํ๋ง ์ปจํ
์ด๋๋ XML ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค ์ ์๊ณ , ์ ๋
ธํ
์ด์
๊ธฐ๋ฐ์ ์๋ฐ ์ค์ ํด๋์ค๋ก ๋ง๋ค ์ ์๋ค
new AnnotationConfigApplicationContext(AppConfig.class)
๋ApplicationContext
์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด์ด๋ค.
์ฐธ๊ณ : ๋ ์ ํํ๋ ์คํ๋ง ์ปจํ ์ด๋๋ฅผ ๋ถ๋ฅผ ๋ BeanFactory , ApplicationContext ๋ก ๊ตฌ๋ถํด์ ์ด์ผ๊ธฐํ๋ค. ์ด ๋ถ๋ถ์ ๋ค์์ ์ค๋ช ํ๊ฒ ๋ค. BeanFactory ๋ฅผ ์ง์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ผ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ApplicationContext๋ฅผ ์คํ๋ง ์ปจํ ์ด๋๋ผ ํ๋ค.
์คํ๋ง ์ปจํ ์ด๋ ์์ฑ ๊ณผ์
1. ์คํ๋ง ์ปจํ ์ด๋ ์์ฑ
new AnnotationConfigApplicationContext(AppConfig.class)
โฌ ๏ธ ๊ตฌ์ฑ์ ๋ณด- ์คํ๋ง ์ปจํ ์ด๋๋ฅผ ์์ฑํ ๋๋ ๊ตฌ์ฑ ์ ๋ณด๋ฅผ ์ง์ ํด์ฃผ์ด์ผ ํ๋ค
2. ์คํ๋ง ๋น ๋ฑ๋ก
- ์คํ๋ง ์ปจํ ์ด๋๋ ํ๋ผ๋ฏธํฐ๋ก ๋์ด์จ ์ค์ ํด๋์ค ์ ๋ณด๋ฅผ ์ฌ์ฉํด์ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋ค.
@Bean
์ด๋ผ ์ ํ ๋ฉ์๋๋ฅผ ๋ชจ๋ ํธ์ถํด์ ๋ฐํ๋ ๊ฐ์ฒด๋ฅผ ์คํ๋ง ์ปจํ ์ด๋์ ๋ฑ๋กํ๋ค- ๋น ์ด๋ฆ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฉ์๋ ์ด๋ฆ์ ์ฌ์ฉํ์ง๋ง ์ง์ ๋ถ์ฌํ ์ ์๋ค (@Bean(name="beanName"))
- ๋น ์ด๋ฆ์ ํญ์ ๋ค๋ฅธ ์ด๋ฆ์ ๋ถ์ฌํด์ผ ํ๋ค(๋ค๋ฅธ ๋น์ด ๋ฌด์๋๊ฑฐ๋, ๊ธฐ์กด ๋น์ ๋ฎ์ด๋ฒ๋ฆฌ๊ฑฐ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์)
3. ์คํ๋ง ๋น ์์กด๊ด๊ณ ์ค์ - ์ค๋น
4. ์คํ๋ง ๋น ์์กด๊ด๊ณ ์ค์ - ์๋ฃ
- ์คํ๋ง ์ปจํ
์ด๋๋ ์ค์ ์ ๋ณด(
AppConfig
)๋ฅผ ์ฐธ๊ณ ํด์ ์์กด๊ด๊ณ๋ฅผ ์ฃผ์ ํ๋ค - ์คํ๋ง์ ๋น์ ์์ฑํ๊ณ ์์กด๊ด๊ณ๋ฅผ ์ฃผ์ ํ๋ ๋จ๊ณ๊ฐ ๋๋์ด์ ธ ์๋ค. ํ์ง๋ง ์ด๋ ๊ฒ ์๋ฐ ์ฝ๋๋ก ์คํ๋ง ๋น์ ๋ฑ๋กํ๋ฉด ์์ฑ์๋ฅผ ํธ์ถํ๋ฉด์ ์์กด๊ด๊ณ ์ฃผ์ ๋ ํ๋ฒ์ ์ฒ๋ฆฌ๋๋ค.
๐ Reference
๋ฐ์ํ