Spring 为什么我们需要在单独的服务层中编写业务逻辑,而不是在控制器本身中编写?
创建不同的层(即业务逻辑实现的服务层)而不是在控制器本身中实现该业务逻辑有什么用?这是因为关注点分离。 在控制器中,它主要对处理传入的http请求和响应该请求感兴趣。我们担心的是与处理与给定通信渠道相关的内容有关的事情 您可以公开RESTAPI以及soap api,也可以使用各种格式的int来共享数据。业务逻辑本身并不关心您如何将这些数据传达给最终用户。所以你把它取出来,放在一个公共的地方,只处理业务逻辑,而控制器类只调用它。然后,您可以让rest控制器和soap控制器通过相同的业务逻辑代码应答请求Spring 为什么我们需要在单独的服务层中编写业务逻辑,而不是在控制器本身中编写?,spring,spring-mvc,spring-boot,microservices,Spring,Spring Mvc,Spring Boot,Microservices,创建不同的层(即业务逻辑实现的服务层)而不是在控制器本身中实现该业务逻辑有什么用?这是因为关注点分离。 在控制器中,它主要对处理传入的http请求和响应该请求感兴趣。我们担心的是与处理与给定通信渠道相关的内容有关的事情 您可以公开RESTAPI以及soap api,也可以使用各种格式的int来共享数据。业务逻辑本身并不关心您如何将这些数据传达给最终用户。所以你把它取出来,放在一个公共的地方,只处理业务逻辑,而控制器类只调用它。然后,您可以让rest控制器和soap控制器通过相同的业务逻辑代码应答
在controller中,您要做的是验证调用服务的请求,并以您希望向调用者公开的方式处理异常。这取决于您的体系结构。如果您使用一些领域驱动的设计原则,那么控制器/api中几乎没有逻辑。控制器将用于协调/管理域服务(即AccountService)、存储库(即AccountRepo)和/或基础设施服务(即EmailService)之间的通信。所有逻辑都在模型和服务中。一些优点是。。。 1.单元可测试代码 2.代码更好地模拟了业务问题(控制器对业务问题毫无意义) 3.控制器不会成为一个阻塞大量业务逻辑并导致混乱的地方 4.还有更多
当然,这一切都取决于可维护性是否是一个优先事项,因为这是一个良好的实践性的MVC设计pattern@franiis这个问题在那里很不合适,原因和这里一样。请不要推荐你不熟悉的网站。另请参见:这是一个非常好的答案。我不清楚的是为什么业务逻辑需要在一个单独的项目中。它可能不在API项目中,而只是封装在不同的类中吗?谢谢