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