조회한 빈이 모두 필요할 때

HYUNBIN CHO·2021년 4월 16일
0

spring

목록 보기
11/23
post-thumbnail

🔷 작업을 하는 데 있어 어떤 한 타입의 스프링 빈이 모두 필요하다면 ➡️ Map과 List를 이용하여 전략패턴을 구현할 수 있다.

🔸 예) 클라이언트가 할인의 종류(1000원 정액 할인, 10% 정률할인)를 선택할 수 있는 경우

void findAllBean(){
	ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class, DiscountService.class);	
    DiscountService discountService = ac.getBean(DiscountService.class);
    Member member = new Member(1L, "userA", Grade.VIP);
    int discountPrice = discountService.discount(member, 10000, "fixDiscountPolicy");
}

static class DiscountService{
    private final Map<String, DiscountPolicy> policyMap;
    private final List<DiscountPolicy> policies;

	@Autowired // 생성자 하나면 생략 가능 
    public DiscountService(Map<String, DiscountPolicy> policyMap,
                           List<DiscountPolicy> policies){
        this.policyMap = policyMap;
        this.policies = policies;

    public int discount(Member member, int price, String discountCode){
    	DiscountPolicy discountPolicy = policyMap.get(discountCode);
        return discountPolicy.discount(memeber, price);
    }
}






https://www.inflearn.com/course/스프링-핵심-원리-기본편#

profile
백견이 불여일타

0개의 댓글