手动实例化bean时的CDI注入

时间:2013-03-16 09:13:15

标签: cdi jboss-weld inject

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

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

感谢您的解释。

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

JM。

1 个答案:

答案 0 :(得分:4)

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

为了让您获得更多洞察力 - CDI不仅@Inject您的依赖关系,还管理其生命周期。这不仅仅是对于bean实例本身,而且对于所有依赖实例,都超出了简单的instanciation和依赖注入,直到终止(调用@PreDestroy)。当你自己实例化bean时,无法知道何时做最后一部分。