spring43 Spring - BeanFactory์ ApplicationContext beanFactory์ ApplicationContext์ ๋ํด์ ์์๋ณด์. BeanFactory ์คํ๋ง ์ปจํ ์ด๋์ ์ต์์ ์ธํฐํ์ด์ค๋ค. ์คํ๋ง ๋น์ ๊ด๋ฆฌํ๊ณ ์กฐํํ๋ ์ญํ ์ ๋ด๋นํ๋ค. getBean() ์ ์ ๊ณตํ๋ค. ์ง๊ธ๊น์ง ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ๋๋ถ๋ถ์ ๊ธฐ๋ฅ์ BeanFactory๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด๋ค. ApplicationContext BeanFactory ๊ธฐ๋ฅ์ ๋ชจ๋ ์์๋ฐ์์ ์ ๊ณตํ๋ค. ๋น์ ๊ด๋ฆฌํ๊ณ ๊ฒ์ํ๋ ๊ธฐ๋ฅ์ BeanFactory๊ฐ ์ ๊ณตํด์ฃผ๋๋ฐ, ๊ทธ๋ฌ๋ฉด ๋์ ์ฐจ์ด๊ฐ ๋ญ๊น? ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋๋ ๋น์ ๊ด๋ฆฌํ๊ณ ์กฐํํ๋ ๊ธฐ๋ฅ์ ๋ฌผ๋ก ์ด๊ณ , ์ ๋ง์ ๋ถ๊ฐ๊ธฐ๋ฅ์ด ํ์ํ๋ค. ๋ฉ์์ง์์ค๋ฅผ ํ์ฉํ ๊ตญ์ ํ ๊ธฐ๋ฅ ์๋ฅผ ๋ค์ด์ ํ๊ตญ์์ ๋ค์ด์ค๋ฉด ํ๊ตญ์ด๋ก, ์์ด๊ถ์์ ๋ค์ด์ค๋ฉด ์์ด๋ก ์ถ๋ ฅ ํ๊ฒฝ๋ณ์ ๋ก์ปฌ, ๊ฐ๋ฐ,.. 2023. 7. 9. Spring - ์คํ๋ง ๋น ์กฐํ -๊ธฐ๋ณธ ์คํ๋ง ์ปจํ ์ด๋์์ ์คํ๋ง ๋น์ ์ฐพ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์กฐํ ๋ฐฉ๋ฒ ac.getBean(๋น์ด๋ฆ, ํ์ ) ac.getBean(ํ์ ) ์กฐํ ๋์ ์คํ๋ง ๋น์ด ์์ผ๋ฉด ์์ธ ๋ฐ์ NoSuchBeanDefinitionException: No bean named 'xxxxx' available public class ApplicationContextBasicFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("๋น ์ด๋ฆ์ผ๋ก ์กฐํ") void findBeanByName(){ MemberService memberService = ac.getBea.. 2023. 7. 9. Spring - ์คํ๋ง ์ปจํ ์ด๋์ ๋ฑ๋ก๋ ๋ชจ๋ ๋น ์กฐํ //ApplicationContextInfoTest.java package hello.core.beanfind; import hello.core.AppConfig; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.AnnotationConfigApplicationContext; class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new Anno.. 2023. 7. 9. Spring - ์คํ๋ง ์ปจํ ์ด๋ ์์ฑ //์คํ๋ง ์ปจํ ์ด๋ ์์ฑ ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext๋ ์คํ๋ง ์ปจํฐ์ด๋์ด์, ์ธํฐํ์ด์ค์ด๋ค. ์คํ๋ง ์ปจํ ์ด๋๋ XML์ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค ์ ์๊ณ , ์ ๋ ธํ ์ด์ ๊ธฐ๋ฐ์ ์๋ฐ ์ค์ ํด๋์ค๋ก ๋ง๋ค ์ ์๋ค. ์ฐธ๊ณ : ๋ ์ ํํ๋ ์คํ๋ง ์ปจํ ์ด๋๋ฅผ ๋ถ๋ฅผ ๋ BeanFactory , ApplicationContext ๋ก ๊ตฌ๋ถํด์ ์ด์ผ๊ธฐํ๋ค. BeanFactory ๋ฅผ ์ง์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ผ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ApplicationContext ๋ฅผ ์คํ๋ง ์ปจํ ์ด๋๋ผ ํ๋ค. 1. ์คํ๋ง ์ปจํ ์ด๋ ์์ฑ new AnnotationConfigAppl.. 2023. 7. 9. Spring - ์ง๊ธ๊น์ง์ ์ ์ฒด ํ๋ฆ ์ ๋ฆฌ ์ง๊ธ๊น์ง์ ์ฝ๋ ์๋ก์ด ํ ์ธ ์ ์ฑ ๊ฐ๋ฐ ์๋ก์ด ํ ์ธ ์ ์ฑ ์ ์ฉ๊ณผ ๋ฌธ์ ์ (dip, ocp ์๋ฐ) ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ (์ถ์ํ์๋ง ์์กด, ๊ตฌ์ฒดํ์๋ ์์กด๋ ์๋๋ก) AppConfig ๋ฆฌํฉํฐ๋ง (์ ์ฒด ์ฑ์ ๊ตฌ์ฑํ๋ ๊ธฐ๋ฅ์ ๋ฐ๋ก appconfig๋ก ๋นผ๋ ) ์๋ก์ด ๊ตฌ์กฐ์ ํ ์ธ ์ ์ฑ ์ ์ฉ ์๋ก์ด ํ ์ธ ์ ์ฑ ๊ฐ๋ฐ ๋คํ์ฑ ๋๋ถ์ ์๋ก์ด ์ ๋ฅ ํ ์ธ ์ ์ฑ ์ฝ๋๋ฅผ ์ถ๊ฐ๋ก ๊ฐ๋ฐํ๋ ๊ฒ ์์ฒด๋ ์๋ฌด ๋ฌธ์ ๊ฐ ์์ ์๋ก์ด ํ ์ธ ์ ์ฑ ์ ์ฉ๊ณผ ๋ฌธ์ ์ ์๋ก ๊ฐ๋ฐํ ์ ๋ฅ ํ ์ธ ์ ์ฑ ์ ์ ์ฉํ๋ ค๊ณ ํ๋ ํด๋ผ์ด์ธํธ ์ฝ๋์ธ ์ฃผ๋ฌธ ์๋น์ค ๊ตฌํ์ฒด๋ ํจ๊ป ๋ณ๊ฒฝํด์ผํจ ์ฃผ๋ฌธ ์๋น์ค ํด๋ผ์ด์ธํธ๊ฐ ์ธํฐํ์ด์ค์ธ DiscountPolicy ๋ฟ๋ง ์๋๋ผ, ๊ตฌ์ฒด ํด๋์ค์ธ FixDiscountPolicy ๋ ํจ๊ป ์์กด -> DIP ์๋ฐ AppConfig ๋ฆฌํฉํฐ๋ง ๊ตฌ์ฑ .. 2023. 7. 7. Spring - DIP, OCP๋ฅผ ์งํค๋ ๋๋ฉ์ธ ์๋น์ค ๊ธฐ์กด ์ฝ๋๋ ์ด๋ ๊ฒ ์ถ์ํ์ ๊ตฌํ์ฒด์ ๋ชจ๋ ์์กดํ๊ณ ์์ง๋ง ์ด๋ฅผ ์์ฑ์๋ฅผ ํตํด์ ๋ถ๋ฆฌํด์ฃผ๋ฉด ์๋์ ๊ฐ์ ์ฝ๋๊ฐ ๋๋ฉด์ MemberServiceImpl์์๋ MemoryMemberRepository()์ธ ๊ตฌํ์ฒด์ ๋ํด์๋ ์์กดํ์ง ์๊ธฐ ๋๋ฌธ์, DIP๋ฅผ ์๋ฐํ์ง ์๊ฒ๋๋ค. ๋์ AppConfig์์ MemberService์ธํฐํ์ด์ค๋ ๊ทธ์ ๊ตฌํ์ฒด์ธ MemberServiceImpl์ ๋ถ๋ฅด๊ณ , ๊ตฌํ์ฒด๋ฅผ ๋ถ๋ฅผ๋ ์ธ์๋ฅผ ํตํด MemoryMemberRepository๋ฅผ ์์ฑํด์ ๋ฃ์ด์ฃผ๊ฒ ๋๋ค. (์์ฑ์ ์ฃผ์ ) ์ค๊ณ ๋ณ๊ฒฝ์ผ๋ก MemberServiceImpl ์ MemoryMemberRepository ๋ฅผ ์์กดํ์ง ์๋๋ค! ๋จ์ง MemberRepository ์ธํฐํ์ด์ค๋ง ์์กดํ๋ค. MemberServiceImpl ์ ์ฅ.. 2023. 7. 7. ์ด์ 1 2 3 4 5 6 7 8 ๋ค์