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;
}
**/

 

참고

- 『스프링 핵심 원리 - 기본편』