
์ปจํ
์ด๋ : ์๋ฐ์ ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ ๊ณต๊ฐ์ ๋งํฉ๋๋ค. ๋ด๋ถ์ Bean ๋ผ์ดํ ์ฌ์ดํด์ ๊ด๋ฆฌํ๋ฉฐ ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
Bean(๋น)์ด๋ผ๊ณ ํฉ๋๋ค.
a ๋น์ com.example.A ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ , b ๋น์ com.example.B ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ฉด์ ์์ฑ์๋ฅผ ํตํด a ๋น์ ์ฃผ์
๋ฐ์ต๋๋ค.
์ด์ ๊ฐ์ด XML ํ์ผ์ ์ฌ์ฉํ์ฌ ๊ฐ ๋น์ ์ ์ํ๊ณ ๋น ๊ฐ์ ์์กด์ฑ์ ๋ช ์์ ์ผ๋ก ์ค์ ํ๋ ๋ฐฉ์์ผ๋ก A์ B ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ๊ด๋ฆฌํ์ต๋๋ค.
์๋์ผ๋ก Bean ๋ฑ๋ก :
@Configuration : ์ ํ๋ฆฌ์ผ์ด์
๊ตฌ์ฑ์ ๋ณด๋ฅผ ๋ฑ๋กํฉ๋๋ค. ๋น์ ์์ฑํ๊ณ ๊ตฌ์ฑํ๊ธฐ ์ํ ๋ฉ์๋๋ค์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ํด๋น ํด๋์ค๊ฐ ๊ด๋ฆฌํด์ผํ Bean์ด ์๋ค๊ณ ์๋ ค์ฃผ๋ ์ญํ ์ ํฉ๋๋ค@Bean : ๋ฉ์๋๋ฅผ ๋ชจ๋ ํธ์ถํ์ฌ ๋ฐํ๋ ๊ฐ์ฒด๋ฅผ ์คํ๋ง ์ปจํ
์ด๋์ ๋ฑ๋กํฉ๋๋ค. @Bean ์ด๋
ธํ
์ด์
์ด ๋ถ์ ๋ฉ์๋์ ์ด๋ฆ์ ์คํ๋ง ๋น์ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ์ฌ ๋น ๋ฑ๋ก ํฉ๋๋ค.
์์ ์ฝ๋์์ BeanConfi ํด๋์ค๋ @Configuration ์ด๋
ธํ
์ด์
์ด ์ ์ฉ๋์ด ์์ต๋๋ค. ์ด ํด๋์ค๋ ์๋์ผ๋ก ๋น์ ๋ฑ๋กํ๋ ์ค์ ํด๋์ค์
๋๋ค. @Bean ์ด๋
ธํ
์ด์
์ด ๋ถ์ ๋ฉ์๋๋ค์ ๊ฐ๊ฐ ๋น์ ์์ฑํ์ฌ ๋ฐํํฉ๋๋ค. ์ฌ๊ธฐ์๋ A์ B ํด๋์ค์ ๋น์ ๋ฑ๋กํ์์ต๋๋ค.
์๋์ผ๋ก Bean ๋ฑ๋ก :
@ComponentScan : ํด๋น ํด๋์ค ํจํค์ง์ ํ์์ @Component, @Service, @Repository, @Controller ํด๋์ค๋ฅผ ํ์ํ์ฌ ๋น์ผ๋ก ๋ฑ๋กํฉ๋๋ค.@Component : ์ปดํฌ๋ํธ ์ค์บ(Component Scanning)์ ํตํด ๋น(Bean)์ผ๋ก ๋ฑ๋กํ ํด๋์ค๋ฅผ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ์ ๋
ธํ
์ด์
์ด ๋ถ์ ํด๋์ค๋ค์ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์
์ปจํ
์คํธ์ ์ํด ์๋์ผ๋ก ๊ฒ์๋์ด ๋น์ผ๋ก ๋ฑ๋ก๋ฉ๋๋ค.
@Service: ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ ์๋น์ค(Service) ๊ณ์ธต์ ํด๋์ค์ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ํด๋์ค๋ค์ ์ฃผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌํํ๊ณ ์ ๊ณตํฉ๋๋ค.
@Controller: ์น ์ ํ๋ฆฌ์ผ์ด์
์์ ์ฌ์ฉ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ปจํธ๋กค๋ฌ(Controller) ํด๋์ค์ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ํด๋์ค๋ค์ HTTP ์์ฒญ์ ๋ฐ์์ ์ ์ ํ ์๋ต์ ์์ฑํ๊ณ , ๋น์ฆ๋์ค ๋ก์ง์ ํธ์ถํ๊ฑฐ๋ ๋ชจ๋ธ์ ์กฐ์ํ์ฌ ๋ทฐ(View)์ ์ ๋ฌํฉ๋๋ค.
@Repository: ๋ฐ์ดํฐ ์ก์ธ์ค ๊ฐ์ฒด(DAO, Data Access Object)๋ฅผ ๋ํ๋
๋๋ค. ์ด ํด๋์ค๋ค์ ์ฃผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ค๋ฅธ ์๊ตฌ ์ ์ฅ์์ ์ ๊ทผํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ์กฐ์ํฉ๋๋ค.
@Controller
public class Controller01 {
}

๐ฆ ์คํ๋ง ์ปจํ
์ด๋๋ฅผ ์ฌ์ฉํ๋ ์ด์ ?
new ์์ฑ์๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ๋งค๋ฒ ์์ฑํ ๊ฒฝ์ฐ, ๊ฐ์ฒด ๊ฐ์ ์ฐธ์กฐ๊ฐ ๋ง์์ ธ ์์กด์ฑ์ด ๋์์ง๊ฒ ๋ฉ๋๋ค. ์ด๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์์น์ ์๋ฐฐ ๋๋ฉฐ ๊ฐ์ฒด ๊ฐ์ ์์กด์ฑ ๋ฐ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ธฐ ์ํด ์คํ๋ง ์ปจํ
์ด๋๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
BeanFactory๊ฐ ์ ๊ณตํ๊ณ ๊ทธ ์ธ์ ๋ถ๊ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.BeanFactory๋ณด๋ค ApplicationContext๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. ๊ทธ ์ด์ ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ ๋๋ ๋น ๊ด๋ฆฌ, ์กฐํํ๋ ๊ธฐ๋ฅ ์ธ์ ๋ถ๊ฐ ๊ธฐ๋ฅ์ด ํ์ํ๊ธฐ ๋๋ฌธ์
๋๋ค.MessageSource : ๋ฉ์ธ์ง ๋ค๊ตญํ๋ฅผ ์ํ ์ธํฐํ์ด์คEnvironmentCapable : ๊ฐ๋ฐ, ์ด์ ๋ฑ ํ๊ฒฝ์ ๋ถ๋ฆฌํด์ ์ฒ๋ฆฌํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์
๊ตฌ๋์ ํ์ํ ์ ๋ณด๋ค์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ธํฐํ์ด์คApplicationEventPublisher : ์ด๋ฒคํธ๋ฅผ ๋ฐํํ๊ณ ๊ตฌ๋
ํ๋ ๋ชจ๋ธ์ ํธ๋ฆฌํ๊ฒ ์ง์ํ๋ ์ธํฐํ์ด์คResourceLoader : ํ์ผ, ํด๋์คํจ์ค, ์ธ๋ถ ๋ฑ ๋ฆฌ์์ค๋ฅผ ์ฝ์ด์ค๊ธฐ ์ํ ์ธํฐํ์ด์ค