โญ Personal_Study97 ๋น ์๋ช ์ฃผ๊ธฐ ์ฝ๋ฐฑ ๋น ์๋ช ์ฃผ๊ธฐ ์ฝ๋ฐฑ 1. ๋น ์๋ช ์ฃผ๊ธฐ ์ฝ๋ฐฑ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ํ, ๋คํธ์ํฌ ์์ผ ๋ฑ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ ์ ํ์ํ ์ฐ๊ฒฐ์ ๋ฏธ๋ฆฌ ํด๋๊ณ , ์ข ๋ฃ ์์ ์ ์ฐ๊ฒฐ์ ๋ชจ๋ ์ข ๋ฃํ๋ ์์ ์ ์งํํ๋ ค๋ฉด ๊ฐ์ฒด์ ์ด๊ธฐํ์ ์ข ๋ฃ ์์ ์ด ํ์ํ๋ค ์์ ์ฝ๋ // NetworkClient.java public class NetworkClient { private String url; public NetworkClient() { System.out.println("์์ฑ์ ํธ์ถ, url = " + url); connect(); call("์ด๊ธฐํ ์ฐ๊ฒฐ ๋ฉ์์ง"); } public void setUrl(String url) { this.url = url; } // ์๋น์ค ์์์ ํธ์ถ public void connect() { .. 2023. 1. 10. ์์กด๊ด๊ณ ์๋ ์ฃผ์ ์์กด๊ด๊ณ ์๋ ์ฃผ์ 1. ๋ค์ํ ์์กด๊ด๊ณ ์ฃผ์ ๋ฐฉ๋ฒ ์์ฑ์ ์ฃผ์ (constructor) โ ์์ ์ ์ฃผ์ (setter) ํ๋ ์ฃผ์ ์ผ๋ฐ ๋ฉ์๋ ์ฃผ์ 1. ์์ฑ์ ์ฃผ์ ์์ฑ์ ํธ์ถ ์์ ์ ๋ฑ 1๋ฒ๋ง ํธ์ถ๋๋ ๊ฒ ๋ณด์ฅ โ ๋ถ๋ณ, ํ์ ์์กด๊ด๊ณ์ ์ฌ์ฉ // OrderServiceImpl.java @Component public class OrderServiceImpl implements OrderService{ // final -> ๋ฐ๋์ ๊ฐ์ ํ ๋นํด์ค์ผํ๋ค.(ํ์, ๋ถ๋ณ) private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired // ์์ฑ์๊ฐ ํ ๊ฐ๋ง ์์ ๊ฒฝ์ฐ ์๋ตํด๋ ๋๋ค. p.. 2023. 1. 9. ComponentScan ์ปดํฌ๋ํธ ์ค์บ ์ปดํฌ๋ํธ ์ค์บ & ์์กด๊ด๊ณ ์๋์ฃผ์ ๋งค๋ฒ @Bean์ด๋ XML ํ์ผ๋ก ์คํ๋ง ๋น์ ์ง์ ๋ฑ๋กํด์ฃผ๋ฉด ๋งค์ฐ ๋ฒ๊ฑฐ๋ก์ โ ์ปดํฌ๋ํธ ์ค์บ: ์ค์ ์ ๋ณด๊ฐ ์์ด๋ ์๋์ผ๋ก ์คํ๋ง๋น์ ๋ฑ๋กํด์ฃผ๋ ๊ธฐ๋ฅ โ ์์กด ๊ด๊ณ ์๋ ์ฃผ์ : @Autowired package hello.core; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; @Configuration @ComponentScan( excludeFilters = @ComponentS.. 2023. 1. 7. Singleton Container Singleton Container ์น ์ ํ๋ฆฌ์ผ์ด์ & ์ฑ๊ธํค ์ผ๋ฐ์ ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ๊ณ ๊ฐ์ด ๋์์ ์์ฒญ์ ํ๋ค! ์คํ๋ง ์๋ ์์ํ DI์ปจํ ์ด๋ public class SingletonTest { @Test @DisplayName("์คํ๋ง ์๋ ์์ํ DI์ปจํ ์ด๋") void pureContainer() { AppConfig appConfig = new AppConfig(); // 1. ์กฐํ: ํธ์ถ ํ ๋๋ง๋ค ๊ฐ์ฒด ์์ฑ MemberService memberService1 = appConfig.memberService(); // 2. ์กฐํ: ํธ์ถ ํ ๋๋ง๋ค ๊ฐ์ฒด ์์ฑ MemberService memberService2 = appConfig.memberService(); // ์ฐธ์กฐ๊ฐ์ด ๋ค๋ฅด๋ค //.. 2023. 1. 6. ์คํ๋ง ์ปจํ ์ด๋ & Bean ์กฐํ ์คํ๋ง ์ปจํ ์ด๋ & ๋น ์กฐํํ๊ธฐ ์คํ๋ง ์ปจํ ์ด๋ ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext ๋ฅผ ์คํ๋ง ์ปจํ ์ด๋๋ผ ํ๋ค. ApplicationContext๋ ์ธํฐํ์ด์ค์ด๋ค. ์คํ๋ง ์ปจํ ์ด๋ ์์ฑ ๊ณผ์ 1. ์คํ๋ง ์ปจํ ์ด๋ ์์ฑ ์คํ๋ง ์ปจํ ์ด๋๋ฅผ ์์ฑํ ๋๋ ๊ตฌ์ฑ ์ ๋ณด๋ฅผ ์ง์ ํด์ฃผ์ด์ผ ํ๋ค.(AppConfig) 2. ์คํ๋ง ๋น ๋ฑ๋ก ๋น ์ด๋ฆ์ ๋ฉ์๋ ์ด๋ฆ ๊ทธ๋๋ก ์ฌ์ฉํ๊ฑฐ๋ ์ง์ ๋ถ์ฌํ ์ ์๋ค. ์ฃผ์: ๋น ์ด๋ฆ์ ํญ์ ๋ค๋ฅธ ์ด๋ฆ์ ๋ถ์ฌ ํด์ผ ํ๋ค. 3. ์คํ๋ง ๋น ์์กด๊ด๊ณ ์ค์ - ์ค๋น 4. ์คํ๋ง ๋น ์์กด๊ด๊ณ ์ค์ - ์๋ฃ ์คํ๋ง ์ปจํ ์ด๋๋ ์ค์ .. 2023. 1. 5. ์ ์ด์ ์ญ์ (IoC) & ์์กด์ฑ ์ฃผ์ (DI) ์ ์ด์ ์ญ์ (IoC) & ์์กด์ฑ ์ฃผ์ (DI) ์ ์ด์ ์ญ์ ์ ์ด์ ์ญ์ (IoC): ํ๋ก๊ทธ๋จ์ ์ ์ด ํ๋ฆ์ ์ง์ ์ ์ดํ๋ ๊ฒ์ด ์๋๋ผ ์ธ๋ถ์์ ๊ด๋ฆฌํ๋ ๊ฒ public class OrderServiceImpl implements OrderService { // private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); } ๊ธฐ์กด์๋ ํด๋ผ์ด์ธํธ ๊ตฌํ ๊ฐ์ฒด๊ฐ ์ค์ค๋ก ํ์ํ ์๋ฒ ๊ตฌํ ๊ฐ์ฒด๋ฅผ ์์ฑ, ์ฐ๊ฒฐ ์คํํ๋ค. -> ๊ตฌํ ๊ฐ์ฒด๊ฐ ์ค์ค๋ก ํ๋ก๊ทธ๋จ์ ์ ์ด ํ๋ฆ์ ์กฐ์ ํจ ํ๋ ์ด๋ ๊ฒ ํ ๊ฒฝ์ฐ 1. ํ ์ธ ์ ์ฑ ์ ๋ณ๊ฒฝํ ๋ ํด.. 2023. 1. 1. ์ด์ 1 2 3 4 5 6 7 8 ยทยทยท 17 ๋ค์