我习惯了
@Inject
Instance<Interface> xxx
构造将注入实现接口的每个类的新实例。这非常有用,因为我不需要知道这些类有多少或者是谁来实例化它们,我可以迭代它们而不知道它们有多少。
现在我不知道如何使用Spring重现这种行为。
你能帮助我吗?
谢谢,
答案 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
。)