理解托管bean/后备bean

10

我正在学习Java EE 6并尝试掌握其整体框架。我在阅读关于JSF的内容,以及如何添加组件。我正在将组件的值设置/读取到一个带有@ManagedBean注解的bean中。

我有一些困惑,不太理解什么是ManagedBeans。它只是保存组件状态的对象吗?它们还可以有其他方法吗?EJBs该如何适配?ManagedBeans会调用EJBs的方法吗?

2个回答

15
Managedbeans是什么?它只是保存组件状态的对象吗?
JSF管理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以来,JPA也是EJB的一部分。但是,JPA是持久性层。除了JPA之外的所有EJB都在EJB容器内运行。所有Java EE兼容服务器都提供这些功能。
在典型的3层架构中(现在通常不止3层,但3层更容易解释),JSF是Web层,EJB是业务层,而JPA则是ORM或持久性层,也是EJB规范的一部分,但不需要EJB容器。不要太担心单词"container",你会很快习惯并且很少需要担心它。如果你使用Java EE服务器,所有设置都已经为你完成。
"托管bean是否调用EJB中的方法?"
是的,如上所述。这里处理了所有繁重的工作。然而,使用EJB并非JSF的必选项。你可以使用任何其他框架,例如Spring,甚至编写简单的POJO,但这另一个讨论领域。

谢谢,正是我想知道的。非常好的回答 :) - LuckyLuke

0

从此链接JSF-管理Bean

托管Bean:

托管Bean是一个普通的Java Bean类,与JSF注册。换句话说,JSF框架管理的Java Bean是托管Bean。

从这个链接创建和使用Web页面的后备Bean

后备Bean:

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

NB:

为了使后备Bean在应用程序启动时可用,您需要将其注册为具有名称和范围的托管Bean。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接