如果在同一个会话中我实例化了多个 SessionScoped Bean 或 EJB(第一次通过容器注入,第二次通过“new”创建)会发生什么?它会抛出错误吗?如果不是,在注射过程中将使用它们中的哪些?AppllicationScoped 和 RequestScoped 也一样?!PS 类没有任何注释,但给它们一个明确的名称。
1 回答
三国纷争
TA贡献1804条经验 获得超7个赞
要拥有真正托管的 bean,您需要让 CDI 处理生命周期,包括创建。也有例外,但我们现在不讨论。
对于您的情况,通过创建的对象new
将根本不是托管 bean,CDI 不会知道它(除非它是某种生产者方法等的结果)。你应该弄清楚为什么要创建它而不是仅仅注入现有的?
AppllicationScoped 和 RequestScoped 也一样?!
对于普通作用域 bean 的每个注入点,CDI 将查看底层“bean 存储”并查看您想要的 bean 是否已经创建并存储在那里。如果是这样,它只会向您返回那个(或者,好吧,它的代理)。如果没有,它将创建一个新的并将其存储在那里以供将来参考。
所以简短的回答是,你不会有两个由 CDI 创建的同一个普通作用域 bean 的实例。
添加回答
举报
0/150
提交
取消