当前位置: 首页 > news >正文

【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们不会和我一样犯这种低级错误(●´ω`●)ゞ

http://www.lryc.cn/news/521243.html

相关文章:

  • 《鸿蒙Next ArkTS:开启人工智能应用开发高效新旅程》
  • Unity 3D游戏开发从入门进阶到高级
  • 什么是SSH登录?SSH客户端软件有哪些?
  • Ubuntu服务器提示:检测到存在恶意文件,补救思路
  • 【学习计算机视觉算法的基础及基本编码-基于Python语言--实例教程】
  • 从零搭建一个Vue3 + Typescript的脚手架——day1
  • Pgsql存储占用分析
  • 51c自动驾驶~合集46
  • Elasticsearch:使用全文搜索在 ES|QL 中进行过滤 - 8.17
  • 《自动驾驶与机器人中的SLAM技术》ch8:基于 IESKF 的紧耦合 LIO 系统
  • 引领图像编辑领域的新潮流!Edicho:实现跨图像一致编辑的新方法(港科蚂蚁)
  • 459. 重复的子字符串【力扣】——kmp拼接字符串解法
  • fpga 的时钟管理模块pll 跟 dcm
  • USB 驱动开发 --- Gadget 驱动框架梳理(一)
  • 1Hive概览
  • 【Web安全】SQL 注入攻击技巧详解:UNION 注入(UNION SQL Injection)
  • IoTDB 常见问题 QA 第三期
  • RabbitMQ---消息确认和持久化
  • 《鸿蒙Next旅游应用:人工智能赋能个性化与智能导览新体验》
  • 微信小程序获取当前页面路径,登录成功后重定向回原页面
  • 【9.2】Golang后端开发系列--Gin路由定义与实战使用
  • 【微信小程序】let和const-综合实训
  • 图匹配算法(涵盖近似图匹配)
  • java线程——Thread
  • MySQL8.0新特性
  • Oracle EBS GL定期盘存WIP日记账无法过账数据修复
  • 【绝对无坑】Mongodb获取集合的字段以及数据类型信息
  • 【Git版本控制器--1】Git的基本操作--本地仓库
  • C++并发编程之无锁数据结构及其优缺点
  • Ubuntu上,ffmpeg如何使用cuda硬件解码、编码、转码加速