Java 在Spring4中,如何定义泛型bean而不显式指定每种可能的类型?

Java 在Spring4中,如何定义泛型bean而不显式指定每种可能的类型?,java,spring,generics,Java,Spring,Generics,在Spring4中,可以使用泛型类型来区分bean的类型。我读过这本书 问题是(据我所知),这需要为您可能要使用的每个可能的泛型类型定义一个显式bean。然而,如果有很多不同的类可以在这里实际使用,这将很快变得非常痛苦(如果它是一个具有两个或三个类型参数的泛型,想象一下这会有多快变得难以管理)。例如: @Bean public SomeGeneric<ThingA> someGenericThingA(ThingA thingA) { return new SomeGeneric

在Spring4中,可以使用泛型类型来区分bean的类型。我读过这本书

问题是(据我所知),这需要为您可能要使用的每个可能的泛型类型定义一个显式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);
}
@Bean
公共SomegenericSomegenericThinga(ThingA ThingA){
返回新的SomeGeneric(thingA);
}
@豆子
公共SomeGeneric someGenericThingB(ThingB ThingB){
返回新的SomeGeneric(thingB);
}
@豆子
公共SomeGeneric someGenericThingC(ThingC ThingC){
返回新的SomeGeneric(thingC);
}
@豆子
公共SomeGeneric someGenericThingD(ThingD ThingD){
返回新的通用(thingD);
}
@豆子
公共某些通用某些通用铰链(ThingE ThingE){
返回新的通用(东西);
}
@豆子
公共SomeGeneric someGenericThingF(ThingF ThingF){
返回新的SomeGeneric(thingF);
}
一旦设置了上述内容,我就可以非常方便地自动连接这些实例中的任何一个,如下所示:

@Autowired
SomeGeneric<ThingC> someGenericThingC;
@Autowired
一些泛型,一些泛型;

但由于这是一种无意识的重复模式,我想知道是否有某种方法可以避免配置类中的所有重复。我可以使用某种Bean工厂或后处理器来减少这种重复吗?

您可以尝试使用一个接口和它的一些实现。@Alfabravo这有点含糊不清,不是吗?我不知道添加一个或多个接口会如何改变这种情况。这里的
Box
的目的是什么?@SotiriosDelimanolis这是我正在使用的结构的一个最小的、微不足道的例子。“Box”基本上代表任何通用的。我的实际代码除了公开包含的项之外,还为Box提供了自己的功能。我认为这个问题已经足够大了,没有试图塞进所有不相关的细节来证明设计的合理性。是的,但你知道它不起作用。因此,让我们尝试解决实际问题。这听起来像是个xy问题。