spring-boot - 为什么我不应该在一个 Controller 类中调用多个服务?

标签 spring-boot design-patterns facade

我刚刚阅读了以下文章
这里:What is the best approach to use multiple services inside a resource controller?
在这里:Can I have multiple services in a Controller class - Spring MVC?
文章说我不应该在一个 Controller 类中调用多个服务。我应该将所有服务封装在一个 Facade 类(Facade 模式)中。

那么为什么我不应该在一个 Controller 类中调用多个服务呢?
我可以在一个服务类中调用多个服务吗?正确吗?

最佳答案

从技术上讲,没有什么可以阻止您从 Controller 调用多个服务,但这可能是一个糟糕的设计决策,主要是由于 Single Responsibility Principle 。粗略地说,这表明类应该具有单一的职责和更改的理由, Controller 是应用程序的接口(interface),并且应该只关注这一点。任何需要导入多个服务的类都可能包含一些业务逻辑,并且该代码可能比 Controller 类更好地放置在单独的业务层类中。

如果您在 Controller 的每个方法中仅使用单个服务,也许您应该将 Controller 拆分为更小的 Controller ,每个 Controller 使用与其相关的服务。

关于spring-boot - 为什么我不应该在一个 Controller 类中调用多个服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72298136/

相关文章:

design-patterns - 关于设计模式: When should I use the singleton?

c++ - C++类中的工厂依赖

java - 对外观类进行单元测试

javascript - 使用导入将显示模块模式javascript的单个文件转换为多文件

php - Symfony 如何在我的服务中获取容器

php - Laravel 5.2 facade getFacadeAccessor 返回的内容

java - 如何将 byte[ ] 转换为 CommonsMultipartFile

Java 堆空间不足,无法在 AWS S3 上上传文件

spring-boot - Spring JMS 事务回滚 - 消息从 ActiveMQ 出队

java - Spring 安全,启动 : replace default DaoAuthenticationProvider