我正在将代码从JEE迁移到SpringBoot。我在JEE中使用javax.enterprise.inject.Instance类使用酷动态注入:
只是注释:
@Inject
private Instance<CCIntentHandler> allMycandidates;
将使allMycandidates充满在类路径中继承CCIntentHandler接口的所有类,然后可以使用以下方法简单地进行迭代:
Iterator<CCIntentHandler> iterator = allMycandidates.iterator()
不需要了。如何在Spring Boot中实现这一目标?
谢谢
最佳答案
如果您将Foo
设为@Autowire
,Spring将注入List<Foo>
的所有实例。
所以,春天相当于...
@Inject
private Instance<CCIntentHandler> allMycandidates;
...是:
@Autowire
private List<CCIntentHandler> allMycandidates;
更新1 以回应此评论:
CCIntentHandler接口或实现此接口的类是否需要任何Spring注释?
Spring必须知道
CCIntentHandler
的任何实例,这可以通过以下方式实现:CCIntentHandler
注释实现@Component
的每个类,并确保这些类已被Spring Boot 要么
CCIntentHandler
的每个类,并使用@Bean
注释每个公共方法,并确保包含这些公共方法的类被@Configuration
注释,并且该配置类由Spring Boot扫描。 有关bean声明和依赖注入in the docs的更多详细信息。