【问题标题】:Getting null instead of new instance获取 null 而不是新实例
【发布时间】:2012-05-06 02:51:28
【问题描述】:

我相信,如果你用 ApplicationScope 注入一个 bean 并且它从未被实例化,CDI 会给你 null。

但是,如果您创建一个新实例,然后尝试稍后注入它可以正常工作,从那时起它将继续正常工作。

在 JSF 依赖注入中,您不必创建一次。我相信 JSF 会做类似的事情

//pseudo code
AtStartUp () {
if (applicationScoped)
create new Instance();

或者可能

AtInjectionPoint () {
if (applicationScoped && null)
return new Instance();

else return Instance;

虽然我相信 CDI 会做类似的事情

AtInjectionPoint () {
return Instance;

你能跟我来吗?我的问题基本上是我们拥有的每个应用程序范围的 bean 都是空的,除非我们创建一次。我们非常希望 CDI 能够以某种方式处理这个问题,并且表现得像前两个伪代码示例之一。

有人知道更多吗?

【问题讨论】:

    标签: jakarta-ee jsf-2 cdi jboss-weld


    【解决方案1】:

    CDI bean 在第一次被引用时由容器自动创建。无需自己实例化它。

    我不确定您为什么会遇到这种行为。也许您将 jsf 托管 bean 注释与 CDI 注释混合在一起?或者您正在尝试在构造函数中访问注入的 bean?

    【讨论】:

    • 是的,它混合了它。很确定我是从 faces-config 中编辑出来的,但不知何故它一直困扰着我。谢谢
    猜你喜欢
    • 1970-01-01
    • 2019-07-31
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多