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

Multiple instances of Sessionscoped Beans in the same session

如果在同一会话中实例化多个 SessionScoped Bean 或 EJB(第一次通过容器注入,第二次通过 "new" 创建),会发生什么情况? 它会抛出错误吗? 如果不是,注射时会用到哪些? AppllicationScoped 和 RequestScoped 也一样吗?!

P.S。 类 没有任何注释请给它们一个明确的名称。

要拥有真正托管的 bean,您需要让 CDI 处理包括创建在内的生命周期。也有例外,但我们现在先不谈。

对于您的情况,通过 new 创建的对象将根本不是托管 bean,CDI 不会知道它(除非它是某些生产者方法等的结果)。 您应该弄清楚为什么要创建它而不是仅仅注入现有的?

The same also for AppllicationScoped and RequestScoped?!

对于普通作用域 bean 的每个注入点,CDI 将查看底层 "bean store" 并查看您想要的 bean 是否已经创建并存储在那里。如果是这样,它只是 returns 你那个(或者,好吧,它的代理)。如果没有,它将创建一个新的并将其存储在那里以供将来参考。

所以简短的回答是,您不会有两个由 CDI 创建的同一个普通作用域 bean 的实例。