【问题标题】:CDI injection when instantiating bean manually手动实例化 bean 时的 CDI 注入
【发布时间】:2013-03-05 01:27:32
【问题描述】:

我知道这种问题会经常出现,但我想知道是否有办法手动实例化一个 bean(使用 new Xxxx())并完成我的注入。 也许使用 BeanManager,但我不知道如何使用。

如果不可能,我想知道为什么没有这样做。从概念上讲,我没有找到使这不可能的充分理由。

感谢您的解释。

P.S:我正在使用 JBoss 7.1.1 和 Weld CDI 容器。

JM.

【问题讨论】:

    标签: cdi jboss-weld inject


    【解决方案1】:

    因为 CDI 背后的一个基本概念是作用域及其相关上下文的概念。这就是上下文和依赖注入中的上下文。基本上,具有范围的 bean 具有明确定义的生命周期,但是当您自己实例化 bean 时,不再说明它的生命周期是什么。阅读 CDI 规范的2.4 Scopes 部分。

    为了让您更深入地了解 - CDI 不仅 @Inject 您的依赖项,而且还管理它们的生命周期。这不仅限于简单的实例化和依赖注入,还包括终止(调用@PreDestroy),不仅针对 bean 实例本身,还针对所有依赖实例。当您自己实例化一个 bean 时,不知道何时执行最后一部分。

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 1970-01-01
      • 2016-12-04
      • 2016-08-05
      • 1970-01-01
      • 2016-06-08
      • 2019-06-04
      • 1970-01-01
      相关资源
      最近更新 更多