带有通用配置的Spring Config Bean注入

时间:2020-02-17 02:07:04

标签: java spring generics

我有一个通用接口-

Interface A<T1,T2>{

public T1 getSome(T2 input);

}

我有一个包装器类-

Class B implements A<C,D>{

@Override
public D getSome(C input){

  // Do something
  return D;
}}

现在我有一个spring配置类

@Configuration
public Class BConfig{

@Bean
public A b(){
  return new b();
}}

现在我有一个AppConfig类

@Configuration
Class AppConfig(){

@Inject
private A b

public App app(){
  return new App(b);
}}

我的App类看起来像-

public Class App{
  A b;
  public App(A b){
    this.b=b;}
  public void doSome(){
    C c=new C();
    D d=b.getSome(c);
  }
}

现在在我的App类中,我是否需要使用-

初始化B
A<C,D> b; 

A b;

由于bean注入将在spring config中注入A的实现,即B。我不想指定泛型类型,因为这将稍微破坏使用泛型的目的。

1 个答案:

答案 0 :(得分:1)

Spring按类型,限定词和名称自动为bean接线。

这取决于您要如何使用它们。 如果您在不使用泛型的情况下定义它们,则可以使用java.lang.object,这意味着当您需要在某些类中使用这些逻辑时,将转换为某种类型

使用泛型,您将不会遇到此类问题。

这里是一个例子:

@Configuration
public class BConfig{

 @Bean
 public A<C,D> b(){
  return new B();
 }
}

@Component 
public class E {
 @Autowired
 private A<C,D> b; 
}
相关问题