我知道这种问题会经常出现,但我想知道是否有办法手动实例化一个 bean(使用 new Xxxx())并完成我的注入。也许使用 BeanManager 但我不知道如何。
如果不可能,我想知道为什么没有这样做。从概念上讲,我没有找到使这不可能的充分理由。
谢谢你的解释。
PS:我正在使用 JBoss 7.1.1 和 Weld CDI 容器。
JM。
我知道这种问题会经常出现,但我想知道是否有办法手动实例化一个 bean(使用 new Xxxx())并完成我的注入。也许使用 BeanManager 但我不知道如何。
如果不可能,我想知道为什么没有这样做。从概念上讲,我没有找到使这不可能的充分理由。
谢谢你的解释。
PS:我正在使用 JBoss 7.1.1 和 Weld CDI 容器。
JM。
因为 CDI 背后的一个基本概念是范围及其相关上下文的概念。这就是上下文和依赖注入中的上下文。基本上,具有范围的 bean 具有明确定义的生命周期,但是当您自己实例化 bean 时,不再说明它的生命周期是什么。阅读第2.4节CDI 规范的范围。
为了让您更深入地了解 - CDI 不仅处理@Inject
您的依赖项,还管理它们的生命周期。这超越了简单的实例化和依赖注入,@PreDestroy
不仅适用于 bean 实例本身,而且适用于所有依赖实例的终止(调用)。当你自己实例化一个 bean 时,不知道什么时候做最后一部分。