Spring MVC 与 JSF 2,这是唯一的方法吗?

发布于 2024-10-30 01:07:04 字数 267 浏览 0 评论 0原文

到目前为止,我见过的将 spring/mvc 与 JSF 集成的所有示例都使用 DAO 类、DAOImp、Service、ServiceImp,然后是 JSF ManagedBean,据我所知,对于 EJB 3.1,我所需要的只是 EJB 和 JSF ManagedBean。我没有提及实体。因此,根据我对 Spring + JSF 的理解,我需要: 5 个类,使用 EJB + JSF 我只需要两个类。如果我错了,请纠正我,但如果我是对的,那么将 Spring 与 JSF 结合使用有什么好处。

谢谢。

All the examples I've seen so far integrating spring/mvc with JSF uses DAO class, DAOImp, Service, ServiceImp and then JSF ManagedBean and as far as I know with EJB 3.1 all I need is EJB and JSF ManagedBean. I am not mentioning entities. So based on my understanding with Spring + JSF I need:
5 classes and with EJB + JSF I need only two classes. Please correct me if am wrong but if am right then what's the advantage of using spring with JSF.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一梦浮鱼 2024-11-06 01:07:04

您错了。 -- 如果您想在 Service 类中实现所有内容,可以跳过 DAO、DAOImpl 和 ServiceImpl。

但即使在 EJB 中,将服务和 DAO 分开也是最佳实践。

接口的使用是一种风格。如果您使用接口,至少您可以跳过它们并创建您的服务(和 Dao),例如 EJB 3.1 接口免费 Bean(我目前不知道正确的名称)。至少在 Spring 和 EJB 3.1 中使用接口有相同的优点和缺点。

总结:您可以构建具有 2 个类的 Spring JSF2 应用程序,但最佳实践是至少分离 JSP(视图)、服务(EJB)和 DAO。


Spring 或 JSF 的评论:Ralph 请给我一个例子,假设我有一个实体:具有 id、firstName 和 lastName 的 Person,从 spring 方面我需要什么代码?

在传统的 Spring 架构中,您有:

  • Person(实体)类 - 带有 @Entity
  • PersonDao 的接口 - 为 Person 提供数据库 Load、Strore、Delete 和 Find 方法的接口
  • PersonDaoImpl - PersonDao 接口的实现 - (@Repository )
  • PersonService - 提供围绕人员的业务功能的接口,例如在创建人员后发送电子邮件的创建方法
  • PersonServiceImpl - PersonService 接口的实现 - 它使用例如 PersonDao 和其他服务来提供其功能(@Service )
  • PersonJSF-托管 Bean - 处理 JSF 内容,但没有业务功能,它使用 PersonService(或其他服务)来启动业务功能

这是最常见的架构风格之一(不仅在 Spring 中)。但即便如此,也存在一些变体:

顺便说一句:另一种非常有趣的建筑风格是一顶帽子 Spring ROO用途:它只有视图(PersonController)和模型(Person),所有的DAO和服务功能都放在模型类中——这就是真正的OO设计。

You are wrong. -- You can skipp the DAO, DAOImpl and ServiceImpl if you want to implment all in the Service Class.

But even in EJB it is best practice to seperate the Service and the DAOs.

The usage of Interfaces is a kind of style. If you use interfaces, at least you can skip them to and create your services (and Dao) like EJB 3.1 interface free Beans (I don't know the correct name at the moment). At least there are the same pro and cons to use interfaces in Spring and EJB 3.1.

Summary: You can build Spring JSF2 Apps with 2 classes to, but it is best practice to seperate at least JSP (view), Service (EJB's) and DAOs.


comment by Spring or JSF: Ralph please give me an example, suppose I've an entity: Person with id, firstName and lastName what would be the code I need from spring aspect?

In traditonal Spring architecure you have the:

  • Person (Entity) Class -- the one with the @Entity
  • PersonDao - Interface that provides data base Load, Strore, Delete and Find Methods for the Person
  • PersonDaoImpl - implementation of the PersonDao Interface - (@Repository)
  • PersonService - Interface that provides business functionality arround the person, for example a create method that send an email after a person is created
  • PersonServiceImpl - Implementation of the PersonService Interface - it uses for example the PersonDao and other Sevices to provides its functionality (@Service)
  • PersonJSF-Managed Bean - handles the JSF stuff but has no business functionality, it uses the PersonService (or an other Service) to start business functionality

This is one of the most common architecural style (not only in Spring). But even for this there are some variants:

  • how DAO's can be invoked? All Dao Functions must be invoked via the according Service -- or direct
  • DAOs with or whithout Interfaces? (may you need the Interfaces for your Test Mock Framework?) -- (have a look at Hades, there is only the Interface, but in most cases no Impl)
  • Services with or whithout Interfaces? (
  • ...

BTW: one other very intresting architural style, is the one hat Spring ROO uses: It has only the View (PersonController) and the Model (Person), and all DAO and Service Functionality is put in the Model class. -- That is a bit of real OO Design.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文