@Qualifier @Primary
@Qualifier @Primary
Duplicate Bean
@Autowired
로 의존 관계 주입을 자동으로 실행할 때, 타입으로 조회하게 됨- 해당 타입의 bean이 하나가 아닐 수도 있고, 이 경우
NoUniqueBeanDefinitionException
이 발생 @Qualifier
혹은@Primary
어노테이션을 이용해 해결 가능
@Qualifier
@Qualifier
라는 추가적인 어노테이션을 붙여서 의존 관계를 주입할 대상 선택- 다음 예시에서는
CA
빈이 선택됨 @Primary
보다 우선권이 높음
- 다음 예시에서는
@Component
@Qualifier("A")
public class CA implements SomeInterface {}
@Component
@Qualifier("B")
public class CB implements SomeInterface {}
@Component
public class C {
private final SomeInterface i;
@Autowired
public C(@Qualifier("A") SomeInterface i) {
this.i = i;
}
}
@Primary
@Primary
라는 어노테이션을 통해 여러 bean 매칭시 우선권을 가질 bean 설정- 우선권이 있는
CA
빈이 선택됨
- 우선권이 있는
@Component
@Primary
public class CA implements SomeInterface {}
@Component
public class CB implements SomeInterface {}
@Component
public class C {
private final SomeInterface i;
@Autowired
public C(SomeInterface i) {
this.i = i;
}
}
References
- 스프링 핵심 원리 기본편 - 김영한 (https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard)