Using Generics as Autowiring Qualifiers

2024. 11. 14. 19:49Spring Framework/Spring IoC

@Qualifier 애노테이션 외에도, Java 제네릭 타입을 사용하여 암시적인 qualification 형태로 활용할 수 있습니다. 예를 들어, 다음과 같은 구성이 있다고 가정해 보겠습니다:

@Configuration
public class MyConfiguration {

	@Bean
	public StringStore stringStore() {
		return new StringStore();
	}

	@Bean
	public IntegerStore integerStore() {
		return new IntegerStore();
	}
}

 

앞서 언급한 빈들이 제네릭 인터페이스(즉, Store<String> 및 Store<Integer>)를 구현한다고 가정하면, Store 인터페이스에 @Autowire를 사용하여 제네릭 타입이 qualifier 으로 사용될 수 있습니다. 다음 예제는 이를 보여줍니다:

@Autowired
private Store<String> s1; // <String> qualifier, injects the stringStore bean

@Autowired
private Store<Integer> s2; // <Integer> qualifier, injects the integerStore bean

 

제네릭 qualifier는 리스트, 맵(Map) 인스턴스 및 배열을 자동 주입할 때도 적용됩니다. 다음 예제는 제네릭 리스트를 자동 주입하는 방법을 보여줍니다:

// Inject all Store beans as long as they have an <Integer> generic
// Store<String> beans will not appear in this list
@Autowired
private List<Store<Integer>> s;

'Spring Framework > Spring IoC' 카테고리의 다른 글

Injection with @Resource  (0) 2024.11.14
Using CustomAutowireConfigure  (0) 2024.11.14
Using JSR 330 Standard Annotations  (0) 2024.11.14
Container Extension Points  (3) 2024.11.14
Classpath Scanning and Managed Components  (1) 2024.11.14