김영한님의 인프런 강의와 PDF를 바탕으로 정리하였습니다.
https://www.inflearn.com/courses?s=%EA%B9%80%EC%98%81%ED%95%9C
종종 같은 타입의 여러 빈이 필요한 경우가 있다. 다음과 같은 경우를 생각해보자.
어떤 고객이 결제 창에서 고정 금액 할인 정책(fixDiscountPolicy)과 비율 할인 정책(rateDiscountPolicy)중 선택할 수 있다고 해보자.
이때는 일단 모든 정책을 가져온 뒤, 고객이 선택할 수 있도록 해야한다.
다음 코드를 보자.
아래쪽 DiscountService 스태틱 클래스를 보면 policyMap과 polices를 통해 모든 discountPolicy를 받고 있다.
discount메서드에서 discountCode로 들어온 문자열과 일치하는 것을 찾아 그에 맞는 할인 정책을 수행하도록 하는 것이다.
DiscountService 생성자의 출력문의 결과는 다음과 같다.
모든 할인 정책이 들어간 것을 알 수 있다.
(++ 관계 없는 추가내용으로 AnnotationConfigApplicationContext의 인자로 DiscountService.class가 들어가 있는데, 이렇게 되면 DiscountService를 강제로 빈 객체로 등록시킨다.)
'Spring > spring 원리' 카테고리의 다른 글
프로토타입 빈을 싱글톤 빈과 사용시 문제점과 해결방안 (0) | 2021.06.22 |
---|---|
빈 스코프 (0) | 2021.06.22 |
Bean Lifecycle, callback (0) | 2021.06.21 |
조회되는 빈이 2개 이상이라면? + 어노테이션 직접만들기 (0) | 2021.06.20 |
Lombok사용하여 의존관계 주입하기 (0) | 2021.06.20 |