Spring
의존관계 주입 시 bean이 2개 이상일 때 해결 방법
kmkunk
2021. 10. 11. 22:09
1. @Autowired 추가 매칭
- 타입 매칭을 시도하고, 이때 bean이 2개 이상일 경우 필드 이름, 파라미터 이름으로 추가 매칭한다.
//기존 코드
@Autowired
private DiscountPolicy discountPolicy;
//적용 코드
@Autowired
private DiscountPolicy rateDiscountPolicy;
2. @Primary
- 우선순위를 지정한다.
@Primary
@Component
public class RateDiscountPolicy implements DiscountPolicy {}
@Component
public class FixDiscountPolicy implements DiscountPolicy {}
3. @Qualifier
- 추가 구분자를 붙여준다.
- @Primary 보다 우선순위가 높다.
@Component
@Qualifier("rateDiscountPolicy")
public class RateDiscountPolicy implements DiscountPolicy {}
@Component
@Qualifier("fixDiscountPolicy")
public class FixDiscountPolicy implements DiscountPolicy {}
/**
@Autowired
public DiscountService(@Qualifier("rateDiscountPolicy") DiscountPolicy discountPolicy) {
this.discountPolicy = discountPolicy;
}
**/
참고
- 『스프링 핵심 원리 - 기본편』