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

时间:2014-08-18 01:51:15

标签: java spring-mvc business-logic

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

3 个答案:

答案 0 :(得分:58)

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

@Service个课程应该为您的服务层服务。 在这里你应该把你的业务逻辑

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

@Service@Repository,您的实体类将来自MVC的 M 。 JSP和其他视图技术(例如JSP,Thymeleaf等)将符合 V MVC

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

答案 1 :(得分:11)

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

我建议在得出任何结论之前阅读本文: The Biggest Flaw of Spring Web Applications

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

答案 2 :(得分:0)

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

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

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