【发布时间】:2014-10-10 21:34:31
【问题描述】:
我不知道在 spring mvc 中将业务逻辑放在哪里,因为我是新手。我知道该怎么做,但由于缺乏对 spring mvc 的了解,我不知道从哪里开始。我还想问一下是否有人知道我在哪里可以获得关于此的好教程或具有业务逻辑的 spring mvc Web 应用程序的完整示例?无论如何,我所说的业务逻辑都是关于数据库处理的:)
【问题讨论】:
标签: java spring-mvc business-logic
我不知道在 spring mvc 中将业务逻辑放在哪里,因为我是新手。我知道该怎么做,但由于缺乏对 spring mvc 的了解,我不知道从哪里开始。我还想问一下是否有人知道我在哪里可以获得关于此的好教程或具有业务逻辑的 spring mvc Web 应用程序的完整示例?无论如何,我所说的业务逻辑都是关于数据库处理的:)
【问题讨论】:
标签: java spring-mvc business-logic
@Controller 类作为 来自 MVC 的 C。请注意,Spring MVC 中真正的控制器是 DispatcherServlet,它将使用特定的 @Controller 类来处理 URL 请求。
@Service 类应该为您的服务层服务。 你应该把你的业务逻辑放在这里。
@Repository 类应该为您的数据访问层服务。此处应放置 CRUD 逻辑:插入、更新、删除、选择。
@Service、@Repository 并且您的实体类将是 来自 MVC 的 M。 JSP 和其他视图技术(例如 JSP、Thymeleaf 等)将符合 MV 中的 V。
@Controller 类只能通过接口访问@Service 类。类似地,@Service 类应该只能通过接口访问其他@Service 类和一组特定的@Repository 类。
【讨论】:
@Service 调用许多 @Services 或注释。
很多人会建议将业务逻辑添加到服务层。我个人发现这不是一个好主意,特别是当您开始测试时:您可能必须同时处理持久性和业务逻辑,或者模拟周围的一切,然后事情会变得非常混乱。
我确实建议在得出任何结论之前阅读这篇文章: The Biggest Flaw of Spring Web Applications
重新开始,我们的想法是将业务逻辑移至模型层并简化您的服务方法。
【讨论】:
通常,您的业务逻辑位于服务层。虽然您可以使用 JSR 注释将基本验证规则放入您的 pojo。
对于 Spring MVC 应用程序,您具有处理 http 请求的控制器和域层,它们是代表您的业务模型的 pojo。您通常有一个持久层或 DAO。您可能还有一个服务层,用于帮助处理非平凡的逻辑。
您对数据库处理的评论没有意义。业务规则与存储数据是正交的。您的数据库处理应该在您的持久层中进行。
【讨论】: