我有一个与Spring注射有关的问题。
我有一个用泛型类型参数定义的类。我想知道是否可以注入类型为T的类对象(我的意思是T.class)?
像这样:
@Component
public class MyExecutor<T> {
@Autowired
public MyExecutor(<Inject class object of T>) {
....
}
}
非常感谢。
答案 0 :(得分:1)
这个具体的例子不起作用,但还有另一种方法可以使用泛型创建bean,并在将bean注入其他bean时保持类型。
Spring 4扩展了对Java配置中泛型的支持。现在可以定义两个仅在使用的泛型参数上有区别的bean,并在另一个bean中按类型注入它们,请参阅JIRA:
@Configuration
public class Config {
@Bean("beanA")
public MyExecutor<A> beanA() {
return new MyExecutor<A>(A.class);
}
@Bean("beanB")
public MyExecutor<B> beanB() {
return new MyExecutor<B>(B.class);
}
}
然后可以按类型注入beanA或beanB:
@Component
public class OtherClass {
@Autowired
private MyExecutor<A> beanA;
}