Spring 시리즈는 혼자 공부하며 기록으로 남기고, 만약 잘못 학습 한 지식이 있다면 공유하며 피드백을 받고자 작성합니다.
스프링에 대해 깊게 공부해보고자 인프런의 김영한 강사님께서 강의를 진행하시는 (스프링 핵심 원리 - 기본편) 강의를 수강하며 정리하는 글입니다.
혹여나 글을 읽으시며 잘못 설명된 부분이 있다면 지적 부탁드리겠습니다.
@Component 애노테이션 뿐만 아니라 @Repository, @Service, @Controller처럼 계층에 맞춰 일반적인 애플리케이션 로직도 자동으로 스캔할 수 있다.@ComponentScan을 깔고있다.개발자 입장
@Component 애노테이션 하나만 넣어주면 끝날일을 @Configuration 설정 정보에 가서 @Bean을 통해 객체생성, 주입할 대상을 하나하나 적어주는 과정은 상당히 번거롭다.업무 로직
기술 지원 로직
static class DiscountService {
private final Map<String, DiscountPolicy> policyMap;
private final List<DiscountPolicy> policyList;
public DiscountService(Map<String, DiscountPolicy> policyMap, List<DiscountPolicy> policyList) {
this.policyMap = policyMap;
this.policyList = policyList;
System.out.println("policyMap = " + policyMap);
System.out.println("policyList = " + policyList);
}
public int discount(Member member, int price, String discountCode) {
DiscountPolicy discountPolicy = policyMap.get(discountCode);
return discountPolicy.discount(member, price);
}
}
@Configuration
public class DiscountPolicyConfig {
@Bean
public DiscountPolicy rateDiscountPolicy() {
return new RateDiscountPolicy();
}
@Bean
public DiscountPolicy fixDiscountPolicy() {
return new FixDiscountPolicy();
}
}
DiscountPolicy 구현 빈들만 따로 모아서 패키지로 구성해두어야 한다.