【问题标题】:Does Spring Context have equivalent of Java CDI's @Inject @AnySpring Context 是否具有等效于 Java CDI 的 @Inject @Any
【发布时间】:2018-12-17 08:36:49
【问题描述】:

在 Java CDI 中,收集所有共享超类型的托管 bean 有很好的功能。假设我要收集 MyInterceptor 的所有托管实例,我只需要写:

@Inject
@Any
Instance<MyInterceptor> myInterceptors;

我在处理 EJB 时能够获得类似的功能,尽管解决方案不太漂亮(我需要调用 BeanManager)。

我可以在 Spring 上下文管理的 @Component 上获得类似的功能吗?

[编辑] 为什么不重复 What is the Spring equivalent for CDI's Instance, or Guices Provider
根据我的理解,在上述问题中,有一个隐藏的假设,即我有两个上下文:Spring 和 CDI,可能并非总是如此(尤其是在Java SE 应用程序)。此外,我在混合上下文方面的经验很糟糕,他们经常声称它们是兼容的,但并非总是如此。您可能会陷入意想不到的问题,例如:https://blog.akquinet.de/2017/01/04/dont-get-trapped-into-a-memory-leak-using-cdi-instance-injection/

【问题讨论】:

标签: java spring ejb cdi


【解决方案1】:

如果您将该字段指定为具有通用类型MyInterctptorList,您应该能够实现您正在寻找的内容。例如:

@Autowired
List<MyInterceptor> interceptors;

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

【讨论】:

    猜你喜欢
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 2018-08-05
    相关资源
    最近更新 更多