2017-10-21 124 views
1

我正在将代码从JEE迁移到SpringBoot。我用的是酷动注射JEE与javax.enterprise.inject.Instance类:用于动态注入的Spring Boot中的javax.enterprise.inject.Instance等效项

只是注释:

@Inject 
private Instance<CCIntentHandler> allMycandidates; 

会让allMycandidates充满在我的类路径继承CCIntentHandler接口的所有类,然后我可以重复简单地与:

Iterator<CCIntentHandler> iterator = allMycandidates.iterator() 

没有更多的需要。我如何在Spring Boot中实现这一点?

感谢

回答

1

Spring将注入的Foo所有实例,如果你@Autowire一个List<Foo>

所以,春节等同的......

@Inject 
private Instance<CCIntentHandler> allMycandidates; 

...是:

@Autowire 
private List<CCIntentHandler> allMycandidates; 

更新1回应此评论:

待办事项CCIntentHandler实现这个接口的接口或类需要任何Spring注解?

春天必须意识到CCIntentHandler任何情况下,这可以实现如下:

  • 标注每个类实现CCIntentHandler@Component,并确保这些类是由Spring启动
扫描

  • 公开我以返回实现CCIntentHandler的每个类并使用@Bean注释每个公共方法,并确保包含这些公共方法的类用@Configuration注释,并且此配置类由Spring Boot扫描。

关于bean声明和依赖注入的更多细节in the docs

+0

谢谢! CCIntentHandler接口或实现此接口的类是否需要任何Spring注释? – icordoba

+0

@icordoba我已更新答案以解决您的最新评论 – glytching

相关问题