Spring-study๐ฑ/Spring-Basic60 Section 5-1. ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ฑ๊ธํค ์คํ๋ง์ ํ์์ด ๊ธฐ์ ์ฉ ์จ๋ผ์ธ ์๋น์ค ๊ธฐ์ ์ ์ง์ํ๊ธฐ ์ํด ํ์ํ๋ค. ๋๋ถ๋ถ์ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ค. ๋ฌผ๋ก ์น์ด ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ๋ ์ผ๋ง๋ ์ง ๊ฐ๋ฐํ ์ ์๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณดํต ์ฌ๋ฌ ๊ณ ๊ฐ์ด ๋์์ ์์ฒญ์ ํ๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ํ ๋ ๋ง๋ค AppConfig๋ ์๋ก์ด ๊ฐ์ฒด(memberService)๊ฐ ์๊ธฐ๊ฒ ๋๊ณ ๋ง์ ๊ณ ๊ฐ์ด ์๋น์ค๋ฅผ ์์ฒญํ๋ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์๋ก ๋ค๋ฅธ ๊ณ ๊ฐ์ด 10๋ฒ ์์ฒญํ๋ฉด ๊ฐ์ฒด๊ฐ 10๊ฐ ์์ฑ๋๋ ๊ตฌ์กฐ์ด๋ค. ์คํ๋ง ์๋ ์์ํ DI ์ปจํ ์ด๋ ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ์ ๋ณด๋ฉด ์๋ก ๋ค๋ฅธ ๊ฐ์ฒด์ธ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์์ฒญ์ด ๋ค์ด์ฌ ๋ ๋ง๋ค JVM๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ฒด๊ฐ ์์ฑ๋์ด ์ฌ๋ผ๊ฐ๋ค.(๋ฉ๋ชจ๋ฆฌ ๋ญ๋น) ํด๋น ์ฝ๋์์๋ ์ฌ์ค ๊ฐ์ฒด๊ฐ 4๊ฐ๊ฐ ์์ฑ๋ ๊ฒ์ด๋ผ ๋ณผ ์ ์๋ค... 2022. 4. 7. Section 4-8. ์คํ๋ง ๋น ์ค์ ๋ฉํ ์ ๋ณด - BeanDefinition ์คํ๋ง์ ์ด๋ป๊ฒ ์ด๋ฐ ๋ค์ํ ์ค์ ํ์์ ์ง์ํ๋ ๊ฒ์ผ๊น? ๊ทธ ์ค์ฌ์๋ BeanDefinition ์ด๋ผ๋ ์ถ์ํ๊ฐ ์๋ค. ์ฝ๊ฒ ์ด์ผ๊ธฐํด์ ์ญํ ๊ณผ ๊ตฌํ์ ๊ฐ๋ ์ ์ผ๋ก ๋๋ ๊ฒ์ด๋ค! XML์ ์ฝ์ด์ BeanDefinition์ ๋ง๋ค๋ฉด ๋๋ค. ์๋ฐ ์ฝ๋๋ฅผ ์ฝ์ด์ BeanDefinition์ ๋ง๋ค๋ฉด ๋๋ค. ์คํ๋ง ์ปจํ ์ด๋๋ ์๋ฐ ์ฝ๋์ธ์ง, XML์ธ์ง ๋ชฐ๋ผ๋ ๋๋ค. ์ค์ง BeanDefinition๋ง ์๋ฉด ๋๋ค. BeanDefinition ์ ๋น ์ค์ ๋ฉํ์ ๋ณด๋ผ ํ๋ค. Java์ @Bean , XML์ ๋น ๊ฐ๊ฐ ํ๋์ฉ ๋ฉํ ์ ๋ณด๊ฐ ์์ฑ๋๋ค. ์คํ๋ง ์ปจํ ์ด๋๋ ์ด ๋ฉํ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํ๋ง ๋น์ ์์ฑํ๋ค. ์ฆ, ์คํ๋ง ์ปจํ ์ด๋๋ BeanDefinition์๋ง ์์กดํ๋ค. AnnotationConfigApplication.. 2022. 4. 6. Section 4-7. ๋ค์ํ ์ค์ ํ์ ์ง์ - ์๋ฐ ์ฝ๋, XML ์คํ๋ง ์ปจํ ์ด๋๋ ๋ค์ํ ํ์์ ์ค์ ์ ๋ณด๋ฅผ ๋ฐ์๋๋ฆด ์ ์๊ฒ ์ ์ฐํ๊ฒ ์ค๊ณ๋์ด ์๋ค. java XML Groovy ๋ฑ๋ฑ ์์๋ก ๊ตฌํํ์ฌ ์๋ก์ด ์ค์ ์ ๋ณด ํ์์ ์ฌ์ฉํ ์ ์๋ค. ์ ๋ ธํ ์ด์ ๊ธฐ๋ฐ ์๋ฐ ์ฝ๋ ์ค์ ์ฌ์ฉ ์ง๊ธ๊น์ง ํ๋ ๊ฒ์ด๋ค. new AnnotationConfigApplicationContext(AppConfig.class) AnnotationConfigApplicationContext ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด์ ์๋ฐ ์ฝ๋๋ก๋ ์ค์ ์ ๋ณด๋ฅผ ๋๊ธฐ๋ฉด ๋๋ค. XML ์ค์ ์ฌ์ฉ ์ต๊ทผ์๋ ์คํ๋ง ๋ถํธ๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ฉด์ XML๊ธฐ๋ฐ์ ์ค์ ์ ์ ์ฌ์ฉํ์ง ์๋๋ค. ์์ง ๋ง์ ๋ ๊ฑฐ์ ํ๋ก์ ํธ ๋ค์ด XML๋ก ๋์ด ์๊ณ , ๋ XML์ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ ์์ด ๋น ์ค์ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ์ฅ์ ๋ ์์ผ๋ฏ๋ก ํ๋ฒ์ฏค ๋ฐฐ์๋.. 2022. 4. 5. Section 4-6. BeanFactory์ ApplicationContext beanFactory์ ApplicationContext์ ๋ํด์ ์์๋ณด์. BeanFactory ์คํ๋ง ์ปจํ ์ด๋์ ์ต์์ ์ธํฐํ์ด์ค๋ค. ์คํ๋ง ๋น์ ๊ด๋ฆฌํ๊ณ ์กฐํํ๋ ์ญํ ๋ด๋นํ๋ค. getBean()์ ์ ๊ณตํ๋ค. ์์ Bean์ ์กฐํํ๊ณ ๊บผ๋ด๋ ๋ฑ ์ง๊ธ๊น์ง ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ๋๋ถ๋ถ์ ๊ธฐ๋ฅ์ BeanFactory๊ฐ ์ ๊ณตํ๋ ๊ฒ์ด๋ค. ApplicationContext BeanFactory๊ธฐ๋ฅ์ ๋ชจ๋ ์์๋ฐ์ ์ ๊ณตํ๋ค. ๋น์ ๊ด๋ฆฌํ๊ณ ๊ฒ์ํ๋ ๊ธฐ๋ฅ์ BeanFactory๊ฐ ์ ๊ณตํด์ฃผ๋๋ฐ ๊ทธ๋ผ ๋์ ์ฐจ์ด๋ ๋ฌด์์ผ๊น? ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ๋น์ ๊ด๋ฆฌ ๋ฐ ์กฐํ ๊ธฐ๋ฅ๊ณผ ๋๋ถ์ด ์ ๋ง์ ๋ถ๊ฐ ๊ธฐ๋ฅ์ด ํ์ํ๋ค. ๋ถ๊ฐ ๊ธฐ๋ฅ ์ค์ ๋ก ApplicationContext์ ๋ค์ด๊ฐ๋ณด๋ฉด ์ฌ๋ฌ๊ฐ์ง๋ฅผ ์์๋ฐ๊ณ ์๊ณ ์ต์์์ BeanF.. 2022. 4. 5. Section 4-5. ์คํ๋ง ๋น ์กฐํ - ์์ ๊ด๊ณ ๋ถ๋ชจ-์์ ๊ด๊ณ์ธ ์์๊ด๊ณ์ผ ๋๋ ์ด๋ป๊ฒ ์กฐํํ ๊น? ๋ถ๋ชจ ํ์ ์ผ๋ก ์กฐํํ๋ฉด, ์์ ํ์ ๋ ํจ๊ป ์กฐํ๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ์๋ฐ ๊ฐ์ฒด์ ์ต๊ณ ๋ถ๋ชจ์ธ Objectํ์ ์ผ๋ก ์กฐํํ๋ฉด ๋ชจ๋ ์คํ๋ง ๋น์ ์กฐํํ ์ ์๋ค. 1. ๋ถ๋ชจ ํ์ ์ผ๋ก ์กฐํํ๊ธฐ ์ด๋ฒ์๋ static class๋ก ์๋ก์ด TestConfig๋ฅผ ๋ง๋ค์ด ์ฃผ์๋ค. ๊ฐ์ ๋ถ๋ชจ์ธ DiscountPolicy๋ฅผ ์์ํ๊ณ ์๋ค. ๋ฐ๋ผ์, ํ์ ์ผ๋ก ์กฐํํ์ ๋ ๋ ์ด์ ์์ผ๋ฏ๋ก ์ค๋ณต ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค. ์ด๋ฅผ assertThrows๋ก ์์ธ์ฒ๋ฆฌ ํด์ฃผ์๋ค. 2. ๋น ์ด๋ฆ ์ง์ ํ์ฌ ๋ถ๋ชจ ํ์ ์ผ๋ก ์กฐํํ๊ธฐ 3. ํน์ ํ์ ํ์ ์ผ๋ก ์กฐํํ๊ธฐ Bean์ ๋ฑ๋ก๋์ด ์๋ RateDiscountPolicy๋ ํ๋๋ฐ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ ๊ตฌ์ฒด์ ์์กดํ๊ธฐ์ ๋๋ฌธ์ ์ข์ ๋ฐฉ.. 2022. 4. 5. ์ด์ 1 ยทยทยท 4 5 6 7 8 9 10 ยทยทยท 12 ๋ค์