JavaBean和ManagedBean有什么区别?

10

我正在阅读JSF MVC框架中的MVC组件是什么?

从大的架构角度看,你自己的JSF代码是V

M - 业务领域/服务层(例如EJB/JPA/DAO)
V - 你的JSF代码
C - FacesServlet

从开发人员角度看,架构中的V可以进一步分为以下几个部分:

M - 实体
V - Facelets/JSP页面
C - 管理的Bean

在上面的情况下,JavaBean是一个模型。

但在下面的情况下,托管的Bean变成了控制器?

它们不是同一种东西吗?有什么区别?


相关链接:https://dev59.com/bY_ea4cB1Zd3GeqPOG_7 - BalusC
1个回答

13

简短回答:'Managed Bean' 是 JSF 管理的 Java Bean 的一个遗留的缩写。

详细说明

Bean 通常是由容器管理的 POJO (普通的 Java 对象)。

在这里,"被管理" 意味着容器处理创建/销毁、实例数量、它们的作用域以及某些特定方法的调用。

容器通常由底层服务器提供。 在 Java EE 中,您有不同的容器(CDI、EJB、Web 等)。

JSF 管理的 Bean 是由 JSF 容器管理的 Bean。 EJB 由 EJB 容器管理,Servlet / 过滤器由 Servlet 容器管理,JPA 实体由 EntityManager 管理,等等。

例如,在 Tomcat 服务器上,您只有 Web (servlet) 容器,而没有 EJB 容器。 如果使用 JSF (必须提供关联的依赖项),您也将拥有受管理的 Beans。


我正在学习JSP应用程序,但我不知道在哪里放置业务逻辑。控制器部分在哪里? - Jeff Lee
这要看情况。通常你需要一个前置控制器来处理和分发请求到底层的业务控制器,这些控制器管理一个或多个视图并与持久层进行交互。如果你使用JSP和JSF,请参考https://dev59.com/y3RB5IYBdhLWcg3wAjXR。 - Gab
1
另一个链接:https://dev59.com/r2w05IYBdhLWcg3weBru#7223910 - Gab
不是很清楚,我已经很久没有使用过了,抱歉。 - Gab

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