본문 바로가기
Spring/spring 원리

조회되는 빈이 모두 필요한 경우

by 킹차니 2021. 6. 20.
김영한님의 인프런 강의와 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를 강제로 빈 객체로 등록시킨다.)