@Primary, @Qualifier

자라나는 ㅇㅅㅇ개발자·2023년 10월 20일
0

TIL

목록 보기
107/126

@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 를 지정하는 방식으로 사용하면 코드를 깔끔하게 유지할 수 있다

0개의 댓글