6.9.5 使用泛型作为自动装配限定符
除了@Qualifier注解之外,还可以使用Java泛型类型作为限定的隐式形式。例如,假设您具有以下配置:
@Configuration public class MyConfiguration { @Bean public StringStore stringStore() { return new StringStore(); } @Bean public IntegerStore integerStore() { return new IntegerStore(); } }
假设上面的bean实现了一个通用接口,即Store <String>和Store <Integer>,@Autowire Store接口和泛型将被用作限定符:
@Autowired private Store<String> s1; // <String> qualifier, injects the stringStore bean @Autowired private Store<Integer> s2; // <Integer> qualifier, injects the integerStore bean
泛型限定符也适用于自动装配Lists,Maps和Arrays:
// 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;