使用Spring注入基于泛型类的类对象

时间:2014-02-15 21:38:13

标签: java spring dependency-injection

我有一个与Spring注射有关的问题。

我有一个用泛型类型参数定义的类。我想知道是否可以注入类型为T的类对象(我的意思是T.class)?

像这样:

@Component
public class MyExecutor<T> {
    @Autowired
    public MyExecutor(<Inject class object of T>) {
         ....
    }
}

非常感谢。

1 个答案:

答案 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;

}