3.9.5 使用泛型作为自动注入的限定符

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

@Configuration
public class MyConfiguration {

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

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

}

假设上面的bean实现一个通用接口,即StoreStore,你可以@Autowired注解Store接口,范型作为限定符qualifier:

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

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

自动注入 Lists, Maps and 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;

results matching ""

    No results matching ""