知识卡片

Controller不应承载业务逻辑

专业/工作 · 619.c

内容

Controller属于表现层(User Interface Layer),职责应限定在接收请求参数、调用下层服务、把结果转成响应格式这几件事上,一旦出现更复杂的处理逻辑,应当”下沉”到独立的业务逻辑层(Service层)。这是[[MVC架构的职责划分]]在三层架构(表现层/业务逻辑层/数据访问层)里的进一步细化——避免表现层因为承载了不该属于它的逻辑而变得又厚又难测试。发散:这个原则背后的判断标准很实用——如果一段逻辑脱离了HTTP请求/响应的上下文依然成立(比如一段纯粹的价格计算规则),那它就该属于Service层而非Controller,这也是分层架构里最容易被违反的边界之一。

参考来源

《Spring Boot应用开发实战》第2章《使用Spring Boot构建Web应用程序》