我有一个通用接口-
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类中,我是否需要使用-
初始化BA<C,D> b;
或
A b;
由于bean注入将在spring config中注入A的实现,即B。我不想指定泛型类型,因为这将稍微破坏使用泛型的目的。
答案 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;
}