2017-10-21 116 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

相關問題