1

我读了一些帖子(特别是 BalusC 帖子)并搜索了原因(不是很深),但我找不到为什么不应该使用实体 bean 作为托管 bean。什么原因?(我正在学习“Pro JSF 和 HTML5”,在本书中,实体 bean 被用作托管 bean。)

4

1 回答 1

3

关注点分离。

通常,企业应用程序是作为 EAR 而不是 WAR 开发和部署的。典型的 EAR 项目由作为“后端”的 EJB 子项目和作为“前端”的 WAR 子项目组成。EJB 子项目包含所有 JPA 实体和 EJB 服务。WAR 子项目包含所有 JSF 托管的 bean 和视图(以及与 JSF 不密切相关的内容,例如转换器、验证器、阶段侦听器等)。

一个好的 EJB 子项目可能对 JSF 没有任何依赖。这使其可重用于不同的前端,例如 Spring MVC、JAX-RS、Struts2、纯 JSP/Servlet 甚至面向桌面的 Swing 应用程序。这也意味着您的任何JPA 实体和 EJB 服务都不应在类中具有任何javax.faces.*导入/依赖关系。例如FacesContext,在 JPA 实体或 EJB 服务中拥有 at 是令人担忧的,因为它不一定存在于其他前端。

“Pro JSF 和 HTML5”专注于简单的 WAR 项目。为了展示可能性和/或保持示例“简单”,这是“可以的”,但是一旦他们成长为开发企业应用程序,这实际上会误导初学者,如果这本书没有涵盖设计问题,则更是如此细节。

也可以看看:

于 2014-08-21T17:20:40.257 回答