[英]Does Spring Context have equivalent of Java CDI's @Inject @Any
在Java CDI中,收集所有共享超類型的托管Bean具有強大的功能。 假設我要收集MyInterceptor的所有托管實例,我只需要寫:
@Inject
@Any
Instance<MyInterceptor> myInterceptors;
當我使用EJB時,我可以獲得類似的功能,盡管解決方案的方式不太漂亮(我需要調用BeanManager)。
我可以在Spring上下文管理的@Component上獲得類似的功能嗎?
[編輯]為什么與CDI實例或“指導提供者”的Spring等效項不相同
根據我的理解,在上述問題中,有一個隱藏的假設,即我同時擁有兩種上下文:Spring和CDI,但並非總是如此(尤其是在Java SE應用程序中)。 此外,我在混合上下文方面經驗很差,他們經常聲稱它們是兼容的,但並非總是如此。 您可能會陷入意料之外的問題,例如: https : //blog.akquinet.de/2017/01/04/dont-get-trapped-into-a-memory-leak-using-cdi-instance-injection/
如果將字段指定為具有通用類型MyInterctptor
的List
,則應該能夠實現所需的功能。 例如:
@Autowired
List<MyInterceptor> interceptors;
可以在這里找到更多信息: https : //dzone.com/articles/load-all-implementors
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.