2011-09-23 90 views
10

我正在学习Java EE 6,我正在努力掌握它的整体形象。我正在阅读关于JSF以及如何添加组件。我正在设置/读取组件中的值给具有@ManagedBean注解的bean。理解受管理的bean /支持bean

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

回答

14

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

JSF托管bean与其他任何Java bean相似,只不过它由JSF管理。换句话说,它是一个由JSF根据需要创建和销毁的bean。

Hortsman Core JSF 2书状态。

的JSF实现执行以下操作:

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

而且他们还可以有其他方法吗?

是的,他们可以有尽可能多的方法,但是你会(也应该)理想地想让你的托管bean尽可能瘦。例如,它可能有一个搜索方法,但你不应该在这个方法中实际进行搜索,但这种搜索方法的唯一目的应该是将任务委托给业务层(可能或不可能是基于EJB的)。
我换句话说没有举重

EJB在哪里适合?

EJB是你的业务层,他们有很大的二头肌,并做了所有繁重的工作。自引入EJB3 JPA以来,它也是EJB的一部分。但JPA是持久层。除JPA之外的所有EJB都在EJB容器内运行。所有Java EE投诉服务器提供这些服务。在一个典型的3层体系结构中(但是现在它大多是3层以上,但是3层更容易解释,JSF是你的Web层,EJB是你的业务层,JPA也是EJB规范的一部分,但是不需要EJB容器就是你的ORM或持久层 不要担心字容器太多,你会很快习惯它,很少有人会担心它,如果你正在使用Java EE服务器,它是为你设置的。

是否在调用EJB的方法管理豆?

是的,如上所述。这里所有的繁重工作。但是,在JSF中使用EJB并不是强制性的。你可以使用任何其他框架,例如Spring,甚至可以编写简单的pojos,但这是另一个讨论区域。

+0

谢谢托管bean,正是我想知道。很好的回答:) – LuckyLuke

0

从这个链接JSF - Managed Beans

托管Bean:

托管Bean是JSF注册一个普通的Java Bean类。换句话说,Managed Beans是一个由JSF框架管理的java bean。

从这个链接Creating and Using a Backing Bean for a Web Page

辅助Bean:

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

NB:

关于背豆可用的应用程序启动时,你 注册为使用一个名称和范围