【CI/CD构建】关于不小心将springMVC注解写在service层

背景

之前写一个接口的时候没有察觉到将@RequestBody这个注解带到service层了。

今天提交代码的时候,插件没有检测到这个低级错误,导致试飞构建连maven编译都过不了,maven找不到程序包org.springframework.web.bind.annotation这个包

结果

试飞构建不成功

背后原因

如果将@RequestBody写在 Service层会出现的问题

  1. 编译错误:
    Service 层通常是业务逻辑层,它不直接处理 HTTP 请求。@RequestBody是 Spring MVC 用于处理 HTTP 请求的注解,它依赖于 Spring MVC 的请求处理机制。如果在 Service 层使用@RequestBody,会导致编译错误,因为 Service 层没有相应的请求处理上下文来解析这个注解。
  2. 逻辑混乱:
    从设计模式和分层架构的角度来看,这违背了职责分离原则。控制器层应该负责接收和解析 HTTP 请求,将请求数据转换为业务逻辑层(Service 层)可以理解的对象形式,然后将这些对象传递给 Service 层进行业务处理。如果在 Service 层处理请求体的绑定,会使 Service 层与 HTTP 请求细节耦合,导致代码难以维护和测试。例如,在单元测试 Service 层时,不应该涉及 HTTP 请求相关的内容,而@RequestBody的存在会引入这些不相关的因素。
  3. 无法正常工作:
    即使通过一些不合理的方式(如在不适当的上下文中强制加载 Spring MVC 相关的组件)让代码能够编译通过,@RequestBody在 Service 层也无法正确地获取和解析 HTTP 请求体中的数据,因为它不在请求处理的流程中。它缺少 Spring MVC 的DispatcherServlet等组件对请求的分发和处理环境。

结语

希望uu们不会和我一样犯这种低级错误(●´ω`●)ゞ

相关推荐
测试那点事儿3 小时前
第10章 零基础接口自动化到 Jenkins 持续集成【定时监控与邮件告警完整落地】
ci/cd·自动化·jenkins
行者-全栈开发1 天前
Linux 核弹级高危漏洞 CVE-2026-31431 完整修复指南
linux·运维·服务器·ci/cd·devops·cve·核弹级高危漏洞
测试那点事儿2 天前
第2章零基础接口自动化到 Jenkins 持续集成【本地环境准备与首次跑通】
ci/cd·自动化·jenkins
JAVA面经实录9172 天前
Java开发工程基础完整手册(企业实战完整版)
java·开发语言·git·ci/cd·svn·github·intellij idea
报错小能手2 天前
讲解GitHub Actions 自动 CI 测试 WorkFlows工作流
ci/cd·github
测试那点事儿2 天前
第1章 零基础接口自动化到 Jenkins 持续集成【看懂接口自动化框架全景】
ci/cd·自动化·jenkins
测试那点事儿2 天前
第4章 零基础接口自动化到 Jenkins 持续集成【写第一个 YAML 接口测试用例】
ci/cd·自动化·jenkins
测试那点事儿2 天前
第3章零基础接口自动化到 Jenkins 持续集成【项目结构和核心模块入门】
ci/cd·自动化·jenkins
测试那点事儿2 天前
第5章 零基础接口自动化到 Jenkins 持续集成【参数关联与登录鉴权实战】
ci/cd·自动化·jenkins
测试那点事儿2 天前
第6章 零基础接口自动化到 Jenkins 持续集成【报告查看与常见报错排查】
ci/cd·自动化·jenkins