了解托管bean /支持bean

我正在学习Java EE 6,我正在努力掌握它的整体形象。 我正在阅读有关JSF以及如何添加组件的内容。 我正在将组件中的值设置/读取到具有@ManagedBean批注的bean。

我在理解它时遇到了一些麻烦。 什么是Managedbeans? 它只是保持组件状态的对象吗? 他们也可以有其他方法吗? EJB适合哪里? 托管bean是否在EJB上调用了方法?

什么是Managedbeans? 它只是保持组件状态的对象吗?

JSF Managed bean就像任何其他Java bean一样,除非它由JSF管理。 换句话说,它是一个由JSF根据需要创建和销毁的bean。

Hortsman Core JSF 2书籍状态。

JSF实现执行以下操作:

  1. 根据需要创建并丢弃bean(因此称为“托管bean”)
  2. 显示网页时读取bean属性
  3. 发布表单时设置bean属性

他们也可以有其他方法吗?

是的,他们可以拥有你想要的尽可能多的方法。但是你希望(并且应该)尽可能地让你的托管bean尽可能精简。例如,它可能有一个搜索方法,但你不应该在这个方法中实际搜索但是这种搜索方法的唯一目的应该是将任务委托给业务层(可能是基于EJB,也可能不是基于EJB)。
换句话说, 没有繁重的举动

EJB适合哪里?

EJB是您的业务层,它们有很大的二头肌并且可以完成所有繁重的任务。 自从引入EJB3 JPA以来,它也是EJB的一部分。 然而,JPA是持久层。 除JPA之外的所有EJB都在EJB容器内部运行。 所有Java EE投诉服务器都提供这些。

在典型的3层体系结构中(现在它们大多数超过3层,但3层分更容易解释.JSF是您的Web层,EJB是您的业务层,JPA也是EJB规范的一部分,但不需要EJB容器是你的ORM或持久层。不要过分担心单词容器,你会很快习惯它。很少你会担心它。如果你使用的是Java EE服务器,它就是你的全部设置。

托管bean是否在EJB上调用了方法?

是的,如上所述。 这里所有的重物。 但是,不必将EJB与JSF一起使用。 您可以使用任何其他框架,例如Spring,或者甚至可以编写简单的pojos,但这是另一个讨论领域。

从这个链接JSF – Managed Beans

托管豆:

Managed Bean是在JSF中注册的常规Java Bean类。 换句话说,Managed Beans是一个由JSF框架管理的java bean。

从此链接为网页创建和使用支持Bean

支持豆:

在JSF中,支持bean是JavaBeans,主要用于提供UI逻辑和管理Web层与应用程序业务层之间的数据(类似于数据传输对象)。 通常,每个JSF页面都有一个支持bean。 backing bean包含页面上使用的UI组件的逻辑和属性。

注意:

要使应用程序启动时可用的辅助bean,请将其注册为具有名称和范围的托管bean