在Spring 4中,如何在不明确指定每种可能类型的情况下定义泛型bean?

时间:2017-02-21 15:54:00

标签: java spring generics

在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或后处理器来减少这种重复吗?

0 个答案:

没有答案