Using Generics As Autowiring Qualifiers
Usar genéricos como calificadores de autoconexión
Además de la anotación @Qualifier, puedes utilizar tipos genéricos de Java como una forma implícita de calificación.
Por ejemplo, supón que tienes la siguiente configuración:
@Configuration
public class MyConfiguration {
@Bean
public StringStore stringStore() {
return new StringStore();
}
@Bean
public IntegerStore integerStore() {
return new IntegerStore();
}
}
Suponiendo que los beans anteriores implementan una interfaz genérica —es decir, Store<String> y Store<Integer>—, puedes autoconectar la interfaz Store y el tipo genérico se utiliza como calificador, como muestra el siguiente ejemplo:
@Autowired
private Store<String> s1; // Calificador <String>; inyecta el bean stringStore.
@Autowired
private Store<Integer> s2; // Calificador <Integer>; inyecta el bean integerStore.
Los calificadores genéricos también se aplican al autoconectar listas, instancias de Map y arrays.
El siguiente ejemplo autoconecta una List genérica:
// Inyecta todos los beans Store que tengan el genérico <Integer>.
// Los beans Store<String> no aparecen en esta lista.
@Autowired
private List<Store<Integer>> s;