์คํ๋ง์ด ๋ค์ํ ์ค์ ํ์์(Annotation, xml, etc..) ์ง์ํ ์ ์๋ ์ด์ ์คํ๋ง ์ปจํ
์ด๋๋ ๋ฉํ์ ๋ณด(beanDefinition)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํ๋ง ๋น์ ์์ฑํ๋ค. XML์ ์ฝ์ด์ BeanDefinition์ ๋ง๋ค๋ฉด ๋๋ค. ์๋ฐ ์ฝ๋๋ฅผ ์ฝ์ด์ BeanDefinition์ ๋ง๋ค๋ฉด ๋๋ค. ์คํ๋ง ์ปจํ
์ด๋๋ ์๋ฐ ์ฝ๋์ธ์ง, XML์ธ์ง ๋ชฐ๋ผ๋ ๋๋ค. ์ค์ง BeanDefinition๋ง ์๋ฉด ๋๋ค. ๐ ์๋ก์ด ํ์์ ์ค์ ์ ๋ณด๊ฐ ์ถ๊ฐ๋๋ฉด, XxxBeanDefinitionReader๋ฅผ ๋ง๋ค์ด์ BeanDefinition์ ์์ฑํ๋ฉด ๋๋ค. BeanDefinition BeanClassName: ์์ฑํ ๋น์ ํด๋์ค ๋ช
(์๋ฐ ์ค์ ์ฒ๋ผ ํฉํ ๋ฆฌ ์ญํ ์ ๋น์ ์ฌ์ฉํ๋ฉด ์์) factoryBeanName: ํฉํ ..
Study
BeanFactory์ ApplicationContext BeanFactory : ์คํ๋ง ์ปจํ
์ด๋์ ์ต์์ ์ธํฐํ์ด์ค. getBean() ์ ๊ณต ApplicationContext BeanFactory์ ๊ธฐ๋ฅ์ ๋ชจ๋ ์์๋ฐ์์ ์ฌ์ฉ ์ดํ๋ฆฌ์บ์ด์
์ ๊ฐ๋ฐํ ๋ ๋น์ ๊ด๋ฆฌํ๊ณ ์กฐํํ๋ ๊ธฐ๋ฅ๋ฟ๋ง ์๋๋ผ, ์ ๋ง์ ๋ถ๊ฐ๊ธฐ๋ฅ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค ๋ฉ์์ง ์์ค๋ฅผ ํ์ฉํ ๊ตญ์ ํ ๊ธฐ๋ฅ ํ๊ฒฝ๋ณ์ ์ ํ๋ฆฌ์ผ์ด์
์ด๋ฒคํธ ํธ๋ฆฌํ ๋ฆฌ์์ค ์กฐํ ๊ทธ ์ธ์ ์ฐจ์ด์ Lazy Loading(BeanFactory) vs. Eager Loading(ApplicationContext) BeanFactory loads beans on-demand, while ApplicationContext loads all beans at star..
์คํ๋ง ๋น ์คํ๋ง ์ปจํ
์ด๋์์ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC container. - the Spring Framework documentation ์ปจํ
์ด๋์ ๋ฑ๋ก๋ ๋ชจ๋ ๋น ์กฐํ ๋ชจ๋ ๋น ์ถ๋ ฅํ๊ธฐ @Test @DisplayName("๋ชจ๋ ๋น ์ถ๋ ฅํ๊ธฐ") void findAllBean(){ String[] beanDefiniti..
์คํ๋ง ์ปจํ
์ด๋ ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext๋ฅผ ์คํ๋ง ์ปจํ
์ด๋๋ผ ํ๋ค. ์คํ๋ง ์ปจํ
์ด๋๋ @Configuration์ด ๋ถ์ AppConfig๋ฅผ ์ค์ ์ ๋ณด๋ก ์ฌ์ฉํ๋ค. ์ฌ๊ธฐ์ @Bean์ด๋ผ ์ ํ ๋ฉ์๋๋ฅผ ๋ชจ๋ ํธ์ถํด์ ๋ฐํ๋ ๊ฐ์ฒด๋ฅผ ์คํ๋ง ์ปจํ
์ด๋์ ๋ฑ๋กํ๋ค. ์ด๋ ๊ฒ ์คํ๋ง ์ปจํ
์ด๋์ ๋ฑ๋ก๋ ๊ฐ์ฒด๋ฅผ ์คํ๋ง ๋น์ด๋ผ๊ณ ํ๋ค. ์คํ๋ง ๋น์ @Bean์ด ๋ถ์ ๋ฉ์๋์ ๋ช
์ ์คํ๋ง ๋น์ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ๋ค ์คํ๋ง ๋น์ applicationContext.getBean() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ์ฐพ์ ์ ์๋ค ์คํ๋ง ์ปจํ
์ด๋๋ XML ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค ์..
1๏ธโฃ ์ ์ด์ ์ญ์ IoC, Inversion of Control ๊ธฐ์กด ํ๋ก๊ทธ๋จ์ ํด๋ผ์ด์ธํธ ๊ตฌํ ๊ฐ์ฒด๊ฐ ์ค์ค๋ก ํ์ํ ์๋ฒ ๊ตฌํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ (new๋ก ์ง์ ์์ฑ), ์ฐ๊ฒฐํ๊ณ , ์คํํ๋ค. ๋ฐ๋ฉด์ AppConfig๊ฐ ๋ฑ์ฅํ ์ดํ์ ๊ตฌํ ๊ฐ์ฒด๋ ์์ ์ ๋ก์ง์ ์คํํ๋ ์ญํ ๋ง ๋ด๋นํ๋ค. ํ๋ก๊ทธ๋จ์ ์ ์ด ํ๋ฆ์ AppConfig๊ฐ ๊ฐ์ ธ๊ฐ ๊ฒ์ด๋ค. ํด๋ผ์ด์ธํธ ๊ฐ์ฒด๋ ํ์ํ ์ธํฐํ์ด์ค๋ค์ ํธ์ถํ์ง๋ง ์ด๋ค ๊ตฌํ ๊ฐ์ฒด๊ฐ ์คํ๋ ์ง๋ ๋ชจ๋ฅธ๋ค. ํ๋ก๊ทธ๋จ์ ๋ํ ์ ์ด ํ๋ฆ์ ๋ชจ๋ AppConfig๊ฐ ๊ฐ์ง๊ณ ์๊ฒ ๋๋ค. ์ด๋ ๋ฏ ํ๋ก๊ทธ๋จ์ ์ ์ด ํ๋ฆ์ ์ง์ ์ ์ดํ๋ ๊ฒ์ด ์๋๋ผ ์ธ๋ถ์์ ๊ด๋ฆฌํ๋ ๊ฒ์ ์ ์ด์ ์ญ์ ์ด๋ผ ํ๋ค. This chapter covers the Spring Framework implementation o..