1

我相信,如果您使用 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 能够以某种方式处理这个问题,并且表现得像前两个伪代码示例之一。

有人知道更多吗?

4

1 回答 1

2

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

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

于 2012-04-25T12:53:42.600 回答