簡體   English   中英

Spring Config Bean 注入與泛型

[英]Spring Config Bean Injection with generic

我有一個通用接口-

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 類中,我是否需要使用 -

A<C,D> b; 

或者

A b;

由於 bean 注入將注入 A 的實現,即 Spring 配置中的 B。 我不想指定泛型類型,因為這會稍微破壞使用泛型的目的。

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; 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM