除了 @Qualifier 注解之外,您还可以使用 Java 泛型类型作为一种隐式的限定形式。例如,假设你有以下配置:

    1. @Configuration
    2. public class MyConfiguration {
    3. @Bean
    4. public StringStore stringStore() {
    5. return new StringStore();
    6. }
    7. @Bean
    8. public IntegerStore integerStore() {
    9. return new IntegerStore();
    10. }
    11. }

    假设前面的 Bean 实现了一个泛型接口,(即 Store<String>Store<Integer>),你可以@Autowire Store 接口,泛型被用作限定词,如下例所示:

    1. @Autowired
    2. private Store<String> s1; // <String> qualifier, injects the stringStore bean
    3. @Autowired
    4. private Store<Integer> s2; // <Integer> qualifier, injects the integerStore bean

    通用修饰符也适用于自动装配列表、映射实例和数组:

    1. // 注入所有 Store Bean,只要它们有一个 <Integer> 泛型。
    2. // Store<String> Bean 将不会出现在这个列表中
    3. @Autowired
    4. private List<Store<Integer>> s;