因为我对 Spring MVC 还比较陌生,所以不知道在哪里放置业务逻辑。我有一些想法,但是由于对 Spring MVC 的了解不够,不知从何处入手。同时,我也想问一下有没有人知道在哪里可以找到一个好的教程或完整的 Spring MVC Web 应用程序示例,其中包含业务逻辑?无论如何,我说的业务逻辑主要涉及数据库处理方面 :)
@Controller
类作为MVC架构中的C。请注意,在Spring MVC中,真正的控制器是DispatcherServlet
,它将使用特定的@Controller
类来处理URL请求。
@Service
类应该用于您的服务层。在这里,您应该放置您的业务逻辑。
@Repository
类应该用于您的数据访问层。在这里,您应该放置CRUD逻辑:插入,更新,删除、选择。
@Service
、@Repository
和实体类将成为MVC中的M。JSP和其他视图技术(例如JSP、Thymeleaf等)将符合MVC模式中的V。
@Controller
类只能通过接口访问@Service
类。同样,@Service
类只能通过接口访问其他@Service
类,并且只能访问一组特定的@Repository
类。
许多人会建议将业务逻辑添加到服务层。我个人认为这不是一个好主意,特别是在开始测试时:您可能不得不同时处理持久性和业务逻辑,或者模拟周围的所有内容,然后事情可能会变得非常混乱。
在做出任何结论之前,请阅读本文: Spring Web应用程序中最大的缺陷
总之,想法是将业务逻辑移动到模型层并简化服务方法。
通常,您的业务逻辑放在服务层中。虽然您可以使用JSR注释在您的POJO中放置基本验证规则。
对于Spring MVC应用程序,您有控制器来处理HTTP请求和领域层,这是表示业务模型的POJO。您通常还有一个持久化层或DAO。您可能还有一个服务层,用于帮助处理非平凡逻辑。
关于数据库处理的评论没有意义。业务规则与存储数据无关。您的数据库处理应该放在持久化层中。
@Service
调用多个@Service
或者其他方面的问题。 - Luiggi Mendoza