同一会话中的多个 Sessionscoped Beans 实例

如果在同一个会话中我实例化了多个 SessionScoped Bean 或 EJB(第一次通过容器注入,第二次通过“new”创建)会发生什么?它会抛出错误吗?如果不是,在注射过程中将使用它们中的哪些?AppllicationScoped 和 RequestScoped 也一样?!

PS 类没有任何注释,但给它们一个明确的名称。


侃侃尔雅
浏览 104回答 1
1回答

三国纷争

要拥有真正托管的 bean,您需要让 CDI 处理生命周期,包括创建。也有例外,但我们现在不讨论。对于您的情况,通过创建的对象new将根本不是托管 bean,CDI 不会知道它(除非它是某种生产者方法等的结果)。你应该弄清楚为什么要创建它而不是仅仅注入现有的?AppllicationScoped 和 RequestScoped 也一样?!对于普通作用域 bean 的每个注入点,CDI 将查看底层“bean 存储”并查看您想要的 bean 是否已经创建并存储在那里。如果是这样,它只会向您返回那个(或者,好吧,它的代理)。如果没有,它将创建一个新的并将其存储在那里以供将来参考。所以简短的回答是,你不会有两个由 CDI 创建的同一个普通作用域 bean 的实例。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java