반응형
1. Spring이 제공하는 @Qualifier의 기능
- 타입 외의 부가 정보를 추가해서 자동 와이어링을 세밀하게 제어할 수 있는 방법이다.
- 타입을 기준으로 자동 와이어링하는 환경에서, 동일한 타입이 2개 이상 존재하는 bean들 중 하나의 bean을 선택할 때 유용하다.
- 지정한 qualifier를 가진 bean이 없다면, 이름이 해당 qualifier값인 bean을 검색한다.
2. Bean에 qualifier 설정
1) XML 설정 방식
- <bean> 안에 qualifier값을 지정하면 된다.
<bean id=dataSourceA" class="...">
<qualifier value="mainDB" />
</bean>
2) Annotation 설정 방식
- @Qualifier 어노테이션의 파라미터로 qualifier 값을 지정하면 된다.
@Component
@Qualifier("mainDB")
public class DataSourceA {
...
}
3. Autowired에 qualifier 적용
- Bean을 불러올 때에는 @Qualifier 어노테이션의 파라미터에 qualifier 값을 넣어서 @Autowired와 함께 작성해주면 된다.
@Autowired
@Qualifier("mainDB")
DataSource dataSource;
또는, 아래와 같이 커스텀 qualifier 어노테이션을 정의해서 @Autowired와 함께 작성하는 방법을 사용해도 된다.
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface MainDB {
String value();
}
@Autowired
@MainDB
DataSource dataSource;
- 생성자나 일반 메소드에 @Autowired를 적용하는 경우에는 그 자체에 @Qualifier를 부여하는 것은 의미가 없기 때문에, 다음과 같이 파라미터에 직접 @Qualifier을 부여하는 방법을 사용하면 된다. 이 방법은 선택적인 세밀한 DI가 가능하기 때문에 좋은 방법이다.
@Autowired
public void config(@Qualifier("mainDB") DataSource dataSource, Printer printer) {
...
}
● 참고 자료 : 토비의 스프링 3.1 Vol.2
반응형
'Spring Series > Spring Framework' 카테고리의 다른 글
[Spring] SpEL (0) | 2022.06.21 |
---|---|
[Spring] Collection 타입을 XML로 작성하기 (0) | 2022.06.21 |
[Spring] @Autowired의 4가지 사용 방법 (0) | 2022.06.17 |
[Spring] IoC 컨테이너를 통해 애플리케이션이 만들어지는 방식 (0) | 2022.06.07 |
[Spring] XML 설정 방식을 Annotation으로 바꾸기 (0) | 2022.05.06 |
댓글