
1. 컴포넌트 스캔과 의존관계 자동주입 시작하기 - 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML -> 설정 정보에 직접 등록할 스프링 빈을 나열했다. - 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다 - 의존관계도 자동으로 주입하는 @Autowired 라는 기능도 제공한다. @Configuration @ComponentScan( basePackages = "hello.core.member", excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class)) public class AutoAppConfig { } - 컴포넌트 스캔을 사용하려면 먼저 @Com..

1. 웹 애플리케이션과 싱글톤 - 스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다. - 스프링 애플리케이션은 웹 애플리케이션이다. - 여러 고객이 동시에 요청을 한다. @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer (){ AppConfig appConfig = new AppConfig(); //1. 조회 : 호출할때마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); //2. 조회 : 호출할때마다 객체를 생성 MemberService memberService2 = appConfig.memberService(); //참조 값이 다른 것을 확인 System.ou..

1. 스프링 컨테이너 생성 ApplicationContext : 스프링 컨테이너, 인터페이스 , XML을 기반이나 애노테이션 기반의 자바 설정 클래스 (AppConfig 를 사용했던 방식)로 만들 수 있다. 스프링 컨테이너는 자세하게 BeanFactory , ApplicationContext(대분분 사용) 로 구분 자바 설정 클래스를 기반으로 스프링 컨테이너( ApplicationContext ) //스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 스프링 컨테이너를 생성할 때는 구성 정보를 지정해주어야 한다. -> AppConfig.class 를 구성 정보로 ..

1. 새로운 할인 정책 개발 할인 정책을 지금처럼 고정 금액 할인이 아니라 좀 더 합리적인 주문 금액당 할인하는 정률% 할인으로 변경하기. how? FixDiscountPolicy 뿐만아니라 RateDiscountPolicy class도 만들어주기 public class RateDiscountPolicy implements discountPolicy{ private int discountPercent = 10; @Override public int discount(Member member, int price) { //control + shift + T를 이용해서 test만들기 if(member.getGrade() == Grade.VIP) { return price * discountPercent/100;..