在Spring 4中,可以使用泛型类型来区分bean的类型。我已阅读basic documentation describing this feature。
问题在于(据我所知),这需要为您可能想要使用的每种可能的泛型类型使用显式bean定义。但是,如果有很多不同的类可以在这里实际使用,那将很快变得痛苦(如果它是具有两个或三个类型参数的泛型,想象一下这可能变得无法管理的速度)。一个例子:
@Bean
public SomeGeneric<ThingA> someGenericThingA(ThingA thingA) {
return new SomeGeneric<>(thingA);
}
@Bean
public SomeGeneric<ThingB> someGenericThingB(ThingB thingB) {
return new SomeGeneric<>(thingB);
}
@Bean
public SomeGeneric<ThingC> someGenericThingC(ThingC thingC) {
return new SomeGeneric<>(thingC);
}
@Bean
public SomeGeneric<ThingD> someGenericThingD(ThingD thingD) {
return new SomeGeneric<>(thingD);
}
@Bean
public SomeGeneric<ThingE> someGenericThingE(ThingE thingE) {
return new SomeGeneric<>(thingE);
}
@Bean
public SomeGeneric<ThingF> someGenericThingF(ThingF thingF) {
return new SomeGeneric<>(thingF);
}
设置完上述内容后,我可以非常方便地自动装配任何这些实例,如下所示:
@Autowired
SomeGeneric<ThingC> someGenericThingC;
但是因为这是一种无意识的重复模式,我想知道是否有某种方法可以避免配置类中的所有重复。我可以使用某种Bean Factory或后处理器来减少这种重复吗?