/* ์ด ๊ธ์ ๊น์ํ๋์ ๊ฐ์๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ๋ ค๊ณ ์์ฑํ ๊ธ์ ๋๋ค.
๊ฐ์ธ์ ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์ฌ๋ฆฌ๋ ๊ธ์ด๋ฏ๋ก ์ค๊ฐ ์ค๊ฐ ์ฝ๋๋ ์๋ต๋์์ต๋๋ค. */
์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ธฐ๋ณธํธ - ์ธํ๋ฐ | ๊ฐ์
์คํ๋ง ์ ๋ฌธ์๊ฐ ์์ ๋ฅผ ๋ง๋ค์ด๊ฐ๋ฉด์ ์คํ๋ง์ ํต์ฌ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ , ์คํ๋ง ๊ธฐ๋ณธ๊ธฐ๋ฅผ ํ์คํ ๋ค์ง ์ ์์ต๋๋ค., ์คํ๋ง ํต์ฌ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ , ์ฑ์ฅํ๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์๊ฐ ๋์ด๋ณด์ธ์! ๐ข
www.inflearn.com
์คํ๋ง ์ปจํ ์ด๋ ์์ฑ
MemberApp
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
โพ `ApplicationContext` ๋ฅผ ์คํ๋ง ์ปจํ ์ด๋๋ผ๊ณ ํ๋ฉฐ, ApplicationContext๋ ์ธํฐํ์ด์ค๋ค.
โพ ์คํ๋ง ์ปจํ ์ด๋๋ XML์ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค ์๋ ์๊ณ (์์ฆ ์์ฃผ ์ฌ์ฉํ์ง ์์ง๋ง ๊ฐ์ ๋ค์ชฝ์์ ํ ๋ฒ ๋ณด์ฌ์ฃผ์ ๋ค๊ณ ํจ), ์ด๋ ธํ ์ด์ ๊ธฐ๋ฐ์ ์๋ฐ ์ค์ ํด๋์ค๋ก ๋ง๋ค ์ ์๋ค.
โพ ์๋ ์๋ฐ ์ค์ ํด๋์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํ๋ง ์ปจํ ์ด๋๋ฅผ ๋ง๋ค์๋ค.
- `AnnotationConfigApplicationContext` ํด๋์ค๋ ` ApplicationContext` ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด์ด๋ค.

๐ก ๊ถ๊ธ์ฆ1
: `AnnotationConfigApplicationContext` ์ญํ ๊ณผ ํน์ง
`AnnotationConfigApplicationContext` ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด Java ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ํ๊ณ ์ปจํ ์ด๋๋ฅผ ์ด๊ธฐํ ํ ์ ์์ผ๋ฉฐ, ์ฝ๋ ๊ธฐ๋ฐ ์ค์ ์ ํ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ ์ ์๋ค. ์ด๋ฅผ ํตํด XML ์ค์ ํ์ผ์ ์ฌ์ฉํ์ง ์๊ณ ๋ ์คํ๋ง ๋น์ ์ ์ํ๊ณ ๊ด๋ฆฌ ํ ์ ์๋ค.
์คํ๋ง ์ปจํ ์ด๋ ์์ฑ ๊ณผ์
1. ์คํ๋ง ์ปจํ ์ด๋ ์์ฑ
โพ `new AnnotationConfigApplicationContext(AppConfig.class)`๋ก ์คํ๋ง ์ปจํ ์ด๋๋ฅผ ์์ฑ.
โพ ์ด๋ ์คํ๋ง ์ปจํ ์ด๋๋ ํ๋ผ๋ฏธํฐ๋ก ๋๊ฒจ์ง ํด๋์ค๋ฅผ ๋ณด๊ณ ๊ตฌ์ฑ ์ ๋ณด๋ฅผ ํ์ฉํจ.
2. ์คํ๋ง ๋น ๋ฑ๋ก
โพ ์คํ๋ง ์ปจํ ์ด๋๋ ํ๋ผ๋ฏธํฐ๋ก ๋์ด์จ ์ค์ ํด๋์ค ์ ๋ณด๋ฅผ ์ฌ์ฉํด์ ์คํ๋ง ๋น์ ๋ฑ๋กํจ
โพ @Bean์ด ๋ถ์ ๋ฉ์๋๋ฅผ ์ ๋ถ ํธ์ถํ์ฌ ๋ฉ์๋ ์ด๋ฆ(=key)์ผ๋ก ๋ฐํํ๋ ๊ฐ์ฒด๋ฅผ bean๊ฐ์ฒด(=value)๋ก ๋ฑ๋กํจ
โพ ์ฃผ์ํ ์ : Bean ์ด๋ฆ์ ํญ์ ๋ค๋ฅธ ์ด๋ฆ์ ๋ถ์ฌํด์ผํจ. ์ค๋ณต๋๋ฉด ๋ฌด์๋๊ฑฐ๋ ๋ฎ์ด๋ฒ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์.
3. ์คํ๋ง ๋น ์์กด๊ด๊ณ ์ค์
โพ ์คํ๋ง ์ปจํ ์ด๋๋ ์ค์ ์ ๋ณด๋ฅผ ์ฐธ๊ณ ํด์ ์์กด๊ด๊ณ๋ฅผ ์ฃผ์ ํ๋ค.
โพ ๋จ์ํ ์๋ฐ ์ฝ๋๋ฅผ ํธ์ถํ๋ ๊ฒ ๊ฐ์ง๋ง, ์ฐจ์ด๊ฐ ์์. ์ด ์ฐจ์ด๋ ๋ค์์ ์ฑ๊ธํค ์ปจํ ์ด๋ ์ค๋ช ํ ๋ ํด์ฃผ์ ๋ค๊ณ ํจ.