如何在Spring上重现焊接实例行为

时间:2014-02-03 12:45:25

标签: java spring cdi

我习惯了

@Inject 
Instance<Interface> xxx 

构造将注入实现接口的每个类的新实例。这非常有用,因为我不需要知道这些类有多少或者是谁来实例化它们,我可以迭代它们而不知道它们有多少。

现在我不知道如何使用Spring重现这种行为。

你能帮助我吗?

谢谢,

3 个答案:

答案 0 :(得分:1)

我目前发现的最佳解决方案是注入applicationContext和

@Inject
ApplicationContext applicationContext;

...

Map<String, Object> mapInstance = applicationContext.getBeansWithAnnotation(MyAnnotation.class);

答案 1 :(得分:0)

Spring目前支持@Inject作为类似于@Autowired的注释。您只需要注释要注入为@Component,@ Repository,@ Service或@Controller的类,或者在Beans.xml上配置相同的类。

我建议您查看文档:{​​{3}}

答案 2 :(得分:0)

您只需使用

即可
@Autowired
private List<Interface> interfaces;

在CDI中,这会注入一个类型为List<Interface>的bean,但在Spring中会注入一个类型为Interface的所有bean的列表。

可替换地,

@Autowired
private Map<String, Interface> interfaces;

将注入一个由bean名称键入的所有类型为Interface的bean的映射。

(当javax.inject.Inject位于类路径上时,您可以将@Autowired替换为@Inject。)