我正在学习Java EE 6,我正在努力掌握它的整体形象。我正在阅读有关JSF以及如何添加组件的内容。我正在将组件中的值设置/读取到具有@ManagedBean批注的bean。
我在理解它时遇到了一些麻烦。什么是Managedbeans?它只是保持组件状态的对象吗?他们也可以有其他方法吗? EJB适合哪里?托管bean是否在EJB上调用了方法?
答案 0 :(得分:14)
什么是Managedbeans?它只是持有状态的对象吗? 组件?
JSF Managed bean就像任何其他Java bean一样,除非它由JSF管理。换句话说,它是一个由JSF根据需要创建和销毁的bean。
JSF实现执行以下操作:
他们也可以有其他方法吗?
是的,他们可以拥有您想要的尽可能多的方法。但是您希望(并且应该)尽可能地让您的托管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,但那是另一个讨论领域。
答案 1 :(得分:0)
托管Bean:
Managed Bean是在JSF中注册的常规Java Bean类。换句话说,Managed Beans是一个由JSF框架管理的java bean。
从此链接Creating and Using a Backing Bean for a Web Page
支持Bean:
在JSF中,支持bean是JavaBeans,主要用于提供UI逻辑以及管理Web层和应用程序业务层之间的数据(类似于数据传输对象)。通常,每个JSF页面都有一个支持bean。 backing bean包含页面上使用的UI组件的逻辑和属性。
<强> NB:强>
要使应用程序启动时可用的辅助bean,您就可以了 将其注册为具有名称和范围的托管bean