我仍然不是100%清楚这一点,但对我来说是如此。
我相信如果您使用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;
你能跟我来吗?我的问题基本上是我们拥有的每个applicationcoped bean都是null,除非我们创建它一次。我们非常希望CDI以某种方式处理它,并且表现得像前两个伪代码示例之一......
有没有人对此有更多了解?似乎很难找到有关此事的信息。
答案 0 :(得分:2)
第一次引用时,容器会自动创建CDI bean。无需自己实例化。
我不确定你为何会遇到这种行为。也许你正在将jsf托管bean注释与CDI注释混合在一起?或者您试图在构造函数中访问注入的bean?