Singleton Bean-Instanz nach generischem Parameter
Ich möchte eine Singleton-Bean-Instanz mit einem generischen Parameter basierend auf einem einzelnen @ habe@Component
generische Klasse.
(Ich verwende Spring 4.)
Mein Code:
Ich habe eininterface
so was
public interface Mapper<I, O> {
...
}
nd mehrfache Implementierung davon, die Frühling si@Component
s (Singletons). Etwas wie das
@Component
public class MapperA implements Mapper<ClazzAI, ClazzAO> {
...
}
un
@Component
public class MapperB implements Mapper<ClazzBI, ClazzBO> {
...
}
woherClazzAI
, ClazzAO
, ClazzBI
undClazzBO
sind grundlegende Java-Klassen.
Ich habe noch einen Frühling@Component
(Singleton) die ein @ habMapper
class
als generischer Parameter:
@Component
public class TransformerImpl<I, O, M extends Mapper<I, O>> {
/** The Mapper */
protected final M mapper;
@Inject
private TransformerImpl(final M mapper) {
this.mapper= mapper;
}
...
}
und ich würde es gerne so benutzen:
@Inject
private TransformerImpl<ClazzAI, ClazzAO, MapperA> transformerA;
@Inject
private TransformerImpl<ClazzBI, ClazzBO, MapperB> transformerB;
Das Problem
But Spring kann diese 2 Objekte nicht instanziieren, da es 2 Implementierungen von @ findeMapper
: MapperA
undMapperB
auch wenn ich als generischen Parameter angabe, welche Implementierung ich haben möchte.
Jede Idee, wie man es schafft, ohne all diese Bohnen in einem @ instanziieren zu müss@Configuration
class
?