Instancia Singleton Bean por parámetro genérico
Me gustaría tener una instancia de bean singleton por parámetro genérico basado en un solo@Component
clase genérica
(Estoy usando Spring 4.)
Mi código :
Yo tengo uninterface
Me gusta esto :
public interface Mapper<I, O> {
...
}
Y múltiples implementaciones que son Spring@Component
s (singletons). Algo como esto :
@Component
public class MapperA implements Mapper<ClazzAI, ClazzAO> {
...
}
y
@Component
public class MapperB implements Mapper<ClazzBI, ClazzBO> {
...
}
dóndeClazzAI
, ClazzAO
, ClazzBI
yClazzBO
son clases básicas de Java.
Tengo otra primavera@Component
(singleton) que tienen unMapper
class
como parámetro genérico:
@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;
}
...
}
y me gustaría usarlo así:
@Inject
private TransformerImpl<ClazzAI, ClazzAO, MapperA> transformerA;
@Inject
private TransformerImpl<ClazzBI, ClazzBO, MapperB> transformerB;
El problema :
Pero Spring no puede instanciar esos 2 objetos porque encuentra 2 implementaciones deMapper
: MapperA
yMapperB
incluso si especifico qué implementación quiero como parámetro genérico.
Alguna idea de cómo hacerlo sin la necesidad de instanciar todos esos frijoles en un@Configuration
class
?