将业务逻辑放在spring mvc框架中的哪里?

我不知道将业务逻辑放在spring mvc中的哪个位置因为我是新手。 我知道该做什么,但由于缺乏春季mvc的知识,我不知道从哪里开始。 我还想问一下,如果有人知道我可以在哪里获得一个很好的教程,或者有一个具有业务逻辑的spring mvc web应用程序的完整示例? 无论如何,我所谈论的业务逻辑都是关于数据库处理:)

@Controller类充当MVC的C。 请注意,Spring MVC中的真实控制器是DispatchServlet ,它将使用特定的@Controller类来处理URL请求。

@Service类应该服务于您的服务层。 在这里你应该把你的业务逻辑

@Repository类应该为您的数据访问层服务。 在这里你应该放置CRUD逻辑:插入,更新,删除,选择。

@Service @Repository@Repository和你的实体类将是来自MVC的M. JSP和其他视图技术(例如JSP,Thymeleaf等)将使MV与MVC一致

@Controller类只能通过接口访问@Service类。 类似地, @Service @Repository类应该只能通过接口访问其他@Service类和一组特定的@Repository类。

许多人会建议将业务逻辑添加到服务层。 我个人发现这不是一个好主意,特别是当你开始测试时:你可能不得不同时处理持久性和业务逻辑,或者嘲笑周围的一切,然后事情会变得非常混乱。

我建议在得出任何结论之前阅读本文: Spring Web应用程序的最大缺陷

恢复,想法是将业务逻辑移动到模型层并简化您的服务方法。

通常,您的业务逻辑位于服务层。 虽然您可以使用JSR注释将基本validation规则放入pojos中。

对于Spring MVC应用程序,您有处理http请求的控制器和域层,它们是代表您的业务模型的pojos。 您经常拥有持久层或DAO。 您可能也有一个服务层,用于帮助处理非平凡的逻辑。

您对数据库处理的评论没有意义。 业务规则与存储数据正交。 您的数据库处理应该在您的持久层中。