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;