728x90
할인 서비스를 제공하는데 클라이언트가 할인의 종류(rate, fix)를 선택할 수 있다고 가정할 때, 스프링을 사용하면 소위 말하는 전략 패턴을 이용해 매우 간단하게 구현할 수 있다.
로직 분석
- DiscountService는 Map으로 모든 DiscountPolicy 타입의 구현체를 주입받는다. 이때, fixDiscountPolicy, rateDiscountPolicy 구현체가 주입된다.
- dicount() 메서드는 dicountCode로 fixDiscountPolicy 구현체가 넘어오면 map에서 fixDiscountPolicy 스프링 빈을 찾아 실행한다. 물론, rateDiscountPolicy 구현체가 넘어오면 rateDiscountPolicy 구현체가 실행된다.
주입 분석
- Map<String, DiscountPolicy>
- map 키에 스프링 빈의 이름을 넣어주고, 그 값으로 DiscountPolicy 타입으로 조회한 모든 스프링 빈을 담는다.
- List
- ◦ DiscountPolicy 타입으로 조회한 모든 스프링 빈을 담아준다.
- 만약 해당하는 타입의 스프링 빈이 없으면, 빈 컬렉션이나 Map을 주입한다.
'JAVA_SPRING' 카테고리의 다른 글
SPRING - 빈 스코프 (0) | 2021.12.28 |
---|---|
SPRING - 빈 생명 주기 (0) | 2021.12.28 |
SPRING - 애너테이션 직접 만들기 (0) | 2021.12.28 |
SPRING - @Autowired 애너테이션을 이용할 때, 같은 타입 빈이 두 개 이상 조회되면 생기는 문제 (0) | 2021.12.28 |
SPRING - Option (0) | 2021.12.28 |