@Autowired
어노테이션을 통해 자동으로 빈을 설정하는 경우 빈이 두개 이상 등록되면,
1개의 빈만 매칭되야 하지만 2개의 빈이 존재한다며 오류가 발생한다.
이 경우 Spring Boot가 어떤 빈을 주입해야 하는지 알려줘야 한다.
@Component
@Qualifier("discountPolicy")
public class DiscountPolicy {
}
그리고 생성자 주입 시 @Qualifier
를 붙여주고 등록한 이름을 적어준다.
@Autowired
public OrderServiceImpl(@Qualifier("discountPolicy") DiscountPolicy
discountPolicy) {
this.discountPolicy = discountPolicy;
}
Qualifier
어노테이션은 빈에 추가 구분자를 붙여주는 방법으로 생성자에서 해당 구분자를 명시하면 그 구분자를 가진 빈을 주입해준다.
메인 데이터베이스의 스프링 빈은 @Primary
를 적용해서 조회하는 곳에서 편리하게 조회하고,
서브 데이터베이스 커넥션 빈을 획득할 때는 @Qualifier
를 지정하는 방식으로 사용하면 코드를 깔끔하게 유지할 수 있다