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

 

참고

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

'Spring' 카테고리의 다른 글

Bean Scope  (0) 2021.10.16
Bean LifeCycle & Callback  (0) 2021.10.11
Lombok library가 제공하는 애노테이션  (0) 2021.10.11
다양한 의존관계 주입 방법  (0) 2021.10.11
Spring container에 bean을 등록하는 2가지 방법  (0) 2021.10.09