我不知道将业务逻辑放在spring mvc中的位置因为我是新手。我知道该做什么,但由于缺乏春季mvc的知识,我不知道从哪里开始。我还想问一下,如果有人知道我可以在哪里获得一个很好的教程,或者有一个具有业务逻辑的spring mvc web应用程序的完整示例?无论如何,我所谈论的业务逻辑都是关于数据库处理的:)
答案 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。您可能也有一个服务层,用于帮助处理非平凡的逻辑。
您对数据库处理的评论没有意义。业务规则与存储数据正交。您的数据库处理应该在您的持久层中。