繁体   English   中英

Spring Context是否等效于Java CDI的@Inject @Any

[英]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/

如果将字段指定为具有通用类型MyInterctptorList ,则应该能够实现所需的功能。 例如:

@Autowired
List<MyInterceptor> interceptors;

可以在这里找到更多信息: https : //dzone.com/articles/load-all-implementors

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM