gpt4 book ai didi

jsf - 为什么有不同的bean管理注解

转载 作者:行者123 更新时间:2023-12-03 07:34:22 25 4
gpt4 key购买 nike

有什么区别

import javax.annotation.ManagedBean;
import javax.enterprise.context.SessionScoped;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

最佳答案

  1. javax.enterprise.context.SessionScoped( JSR 346 ) 以及 javax.enterprise.context.* 包下的所有其他注释维护以下上下文: CDI 。 CDI 为 Java EE 空间内的依赖注入(inject)、bean 和通用资源管理提供了一种替代的、通用的、更强大的机制。它是 JSF 托管 bean 的替代方案,甚至将取代 coming version of JSF 中的 JSF bean 管理机制。 。

    目前,JSF 和 CDI 带注释的 bean 在任何给定的 Java EE Web 应用程序中都可以互换(有一些小的限制)。然而,CDI 带注释的 bean 远远超出了 Web 层的范围,这就是 Java EE 规范不断发展以使 CDI 成为标准 bean 和 DI 机制的原因。

    虽然 CDI 可能是所有 Java EE 开发的明显选择,但 JSF 托管 bean 可以跨 servlet 容器 (Tomcat) 和应用程序服务器(Glassfish、JBoss 等)移植。 CDI bean 只能存在于完整的应用程序服务器中。与some legwork但是,Tomcat 7 可以连接以支持 CDI。

    具体来说,javax.enterprise.context.SessionScoped 是 CDI 内 JSF Session Scope 的并行实现。

  2. javax.faces.bean.SessionScoped ( JSR 314 ) 和 javax.faces.bean.* 包下的所有其他注释维护 JSF-具体的依赖注入(inject)和bean管理机制。然而,使用 JSF 注释进行注释的 Bean 仅在 Web 层中有用。 JSF 注释可用的所有范围都已在 CDI 规范中复制。

  3. javax.annotation.ManagedBean ( JSR 316 ) 和 javax.annotation.* 下的其他 DI 相关注释是对 JSF 通用化的尝试基于注释用于 Java EE 规范中的其他用途,最终开发人员确实不应该使用。

它们为何存在?在我看来,从 JSF beans 到 CDI beans 的转变是该技术的自然演变。 JSF bean 运行良好,但 Spring、Guice 和 Seam 等产品显然表明该技术还不够。还需要弥合 Web 组件和 EJB 之间的差距,而满足该需求的就是 CDI。

另请参阅这些相关问题:

关于jsf - 为什么有不同的bean管理注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15057564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com