【发布时间】:2011-11-23 17:01:23
【问题描述】:
我正在学习 Java EE 6,并试图掌握它的整体形象。我正在阅读有关 JSF 以及如何添加组件的信息。我正在将组件中的值设置/读取到具有 @ManagedBean 注释的 bean。
我无法正确理解它。什么是托管豆?它只是保存组件状态的对象吗?他们也可以有其他方法吗? EJB 适合哪里?托管 bean 是否调用 EJB 上的方法?
【问题讨论】:
标签: java jsf jakarta-ee ejb
我正在学习 Java EE 6,并试图掌握它的整体形象。我正在阅读有关 JSF 以及如何添加组件的信息。我正在将组件中的值设置/读取到具有 @ManagedBean 注释的 bean。
我无法正确理解它。什么是托管豆?它只是保存组件状态的对象吗?他们也可以有其他方法吗? EJB 适合哪里?托管 bean 是否调用 EJB 上的方法?
【问题讨论】:
标签: java jsf jakarta-ee ejb
什么是托管豆?它只是持有状态的对象吗? 组件?
除了由 JSF 管理之外,JSF 托管 bean 与任何其他 Java bean 一样。换句话说,它是由 JSF 根据需要创建和销毁的 bean。
Hortsman Core JSF 2 图书状态。
JSF 实现执行以下操作:
他们也可以有其他方法吗?
是的,他们可以拥有尽可能多的方法。但是,理想情况下,您希望(并且应该)让托管 bean 尽可能精简。例如,它可能具有搜索方法,但您不应该进行实际搜索在此方法中,但此搜索方法的唯一目的应该是将任务委托给业务层(可能基于也可能不基于 EJB)。
换句话说没有繁重的工作。
EJB 适合哪里?
EJB 是您的业务层,他们的二头肌很大,可以承担所有繁重的工作。由于引入了 EJB3 JPA,这也是 EJB 的一部分。然而,JPA 是持久层。除 JPA 之外的所有 EJB 都在 EJB 容器中运行。所有 Java EE 投诉服务器都提供这些 .
在典型的 3 层架构中(现在它大多超过 3 层,但 3 层更容易解释。JSF 是您的 Web 层,EJB 是您的业务层,JPA 也是 EJB 规范的一部分,但不是需要 EJB 容器是您的 ORM 或 Persistence 层。 不要太担心单词容器,你会很快习惯它,很少你会担心它。如果您使用的是 Java EE 服务器,那么一切都已为您设置好了。
托管 bean 是否调用 EJB 上的方法?
是的,如上所述。所有繁重的工作都在这里。但是,将 EJB 与 JSF 一起使用并不是强制性的。您可以使用任何其他框架,例如 Spring,甚至可以编写简单的 pojo,但这是另一个讨论领域。
【讨论】:
托管 Bean:
Managed Bean 是向 JSF 注册的常规 Java Bean 类。也就是说,Managed Beans 是一个由 JSF 框架管理的 java bean。
从此链接Creating and Using a Backing Bean for a Web Page
支持 Bean:
在 JSF 中,支持 bean 是 JavaBean,主要用于提供 UI 逻辑和管理 Web 层和应用程序的业务层之间的数据(类似于数据传输对象)。通常每个 JSF 页面都有一个支持 bean。支持 bean 包含页面上使用的 UI 组件的逻辑和属性。
注意:
为了在应用程序启动时可用的支持 bean,您 将其注册为具有名称和范围的托管 bean
【讨论】: