주변 지인 분께서 동일한 타입의 여러 Spring Bean이 있는 경우 어떻게 사용을 해야 하는지 물어보셨습니다.
회사에서는 @Resource 어노테이션으로 태깅이 되어 있는데 이게 맞는 방법인지 모르겠다고 하셔서
@Primary, @Qualifer 어노테이션을 사용하도록 안내 드렸습니다.
@Resource 어노테이션의 단점
필드, 메서드에만 선언할 수 있어 생성자 주입 형태로 사용할 수 없습니다.
아무래도 생성자 주입 형태로 의존성 주입을 하는 것이 테스트 코드 작성 등 여러가지 면에서 낫기 때문에
@Resource 어노테이션은 적절하지 않은 방법입니다.
@Primary, @Qualifer 사용법
주로 사용이 되는 Bean에 @Primary 어노테이션을 붙여 별도 @Qualifer 어노테이션 없이 사용하고
필요한 곳에만 @Qualifer 어노테이션을 붙여 사용하면 같은 타입의 빈들을 보다 편리하게 관리할 수 있습니다.
// Configuration 파일
@Bean
@Primary
public Foo foo() {
...
}
@Bean("foo2")
public Foo foo2() {
...
}
// 사용처
public class Bar {
public Bar(@Qualifier("foo2") Foo foo) {
this.foo = foo;
}
}
'제안&정리' 카테고리의 다른 글
[Git Strategy] 팀의 속도를 올리는 방법 - Ship Show Ask (0) | 2024.03.03 |
---|---|
[Java] Thread Pool의 적정 Queue 사이즈 (0) | 2023.11.04 |
[JAVA] LocalDate atStartOfDay (0) | 2023.10.23 |
[Java] 스레드 풀 설정 - corePoolSize, maxPoolSize, queueCapacity (2) | 2023.10.15 |
[SQL] join에서 on vs where (0) | 2023.10.08 |