์ปดํฌ๋ํธ ์ค์บ ์คํ๋ง์ ์ค์ ์ ๋ณด๊ฐ ์์ด๋ ์๋์ผ๋ก ์คํ๋ง ๋น์ ๋ฑ๋กํ๋ ์ปดํฌ๋ํธ ์ค์บ์ด๋ผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. @Configuration @ComponentScan( excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class)) public class AutoAppConfig { } ์ปดํฌ๋ํธ ์ค์บ์ ์ด๋ฆ ๊ทธ๋๋ก @Component ์ ๋
ธํ
์ด์
์ด ๋ถ์ ํด๋์ค๋ฅผ ์ค์บํด์ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋ค. ์ด๋ ์คํ๋ง ๋น์ ๊ธฐ๋ณธ ์ด๋ฆ์ ํด๋์ค๋ช
์ ์ฌ์ฉํ๋ ๋งจ ์๊ธ์๋ง ์๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ค. ๋น ์ด๋ฆ ๊ธฐ๋ณธ ์ ๋ต: MemberServiceImpl ํด๋์ค -> memberServiceImpl ๋น ์ด๋ฆ ์ง์ ์ง์ : ๋ง์ฝ ์คํ๋ง ๋น์ ์ด๋ฆ์..
Study/Spring
์ฑ๊ธํค ํจํด ํด๋์ค์ ์ธ์คํด์ค๊ฐ ๋ฑ 1๊ฐ๋ง ์์ฑ๋๋ ๊ฒ์ ๋ณด์ฅํ๋ ๋์์ธ ํจํด private ์์ฑ์๋ฅผ ์ฌ์ฉํด์ ์ธ๋ถ์์ ์์๋ก new ํค์๋๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋๋ก ๋ง๊ณ getInstance ๋ฉ์๋๋ฅผ ์ ๊ณตํด์ ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ return ํ๋ค. ์ฃผ์์ : ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ํ๋์ ๊ฐ์ ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์ฑ๊ธํค ๊ฐ์ฒด๋ statefulํ๊ฒ ์ค๊ณํ๋ฉด ์๋๋ค. ๋ฌธ์ ์ ์ฑ๊ธํค ํจํด์ ๊ตฌํํ๋ ์ฝ๋ ์์ฒด๊ฐ ๋ง์ด ๋ค์ด๊ฐ๋ค ์์ ํด๋์ค๋ฅผ ๋ง๋ค๊ธฐ ์ด๋ ต๋ค ์ ์ฐ์ฑ์ด ๋จ์ด์ง๋ค ์์กด๊ด๊ณ์ ํด๋ผ์ด์ธํธ๊ฐ ๊ตฌ์ฒด ํด๋์ค์ ์์กด - DIP ์๋ฐ ๋๋ณด๊ธฐ ์์กด๊ด๊ณ ์ญ์ ์์น : DIP, Dependency inversion principle ํ๋ก๊ทธ๋๋จธ๋ ์ถ์ํ์ ์์กดํด์ผ์ง, ๊ตฌ์ฒดํ์ ์์กดํ๋ฉด ์๋๋ค. ๊ตฌํ ํด๋์ค์ ์์กดํ์ง ๋ง๊ณ ..
์คํ๋ง์ด ๋ค์ํ ์ค์ ํ์์(Annotation, xml, etc..) ์ง์ํ ์ ์๋ ์ด์ ์คํ๋ง ์ปจํ
์ด๋๋ ๋ฉํ์ ๋ณด(beanDefinition)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํ๋ง ๋น์ ์์ฑํ๋ค. XML์ ์ฝ์ด์ BeanDefinition์ ๋ง๋ค๋ฉด ๋๋ค. ์๋ฐ ์ฝ๋๋ฅผ ์ฝ์ด์ BeanDefinition์ ๋ง๋ค๋ฉด ๋๋ค. ์คํ๋ง ์ปจํ
์ด๋๋ ์๋ฐ ์ฝ๋์ธ์ง, XML์ธ์ง ๋ชฐ๋ผ๋ ๋๋ค. ์ค์ง BeanDefinition๋ง ์๋ฉด ๋๋ค. ๐ ์๋ก์ด ํ์์ ์ค์ ์ ๋ณด๊ฐ ์ถ๊ฐ๋๋ฉด, XxxBeanDefinitionReader๋ฅผ ๋ง๋ค์ด์ BeanDefinition์ ์์ฑํ๋ฉด ๋๋ค. BeanDefinition BeanClassName: ์์ฑํ ๋น์ ํด๋์ค ๋ช
(์๋ฐ ์ค์ ์ฒ๋ผ ํฉํ ๋ฆฌ ์ญํ ์ ๋น์ ์ฌ์ฉํ๋ฉด ์์) factoryBeanName: ํฉํ ..
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..