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

ops/2025/1/16 6:10:51/

背景

之前写一个接口的时候没有察觉到将@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.ppmy.cn/ops/150479.html

相关文章

[Deep Learning] Anaconda+CUDA+CuDNN+Pytorch(GPU)环境配置-2025

文章目录 [Deep Learning] AnacondaCUDACuDNNPytorch(GPU)环境配置-20250. 引子1. 安装Anaconda1.1 安装包下载:1.2 启用安装包安装1.3 配置(系统)环境变量1.4 验证Anaconda是否安装完毕1.5 Anaconda换源 2. 安装CUDACuDNN2.1 判断本机的CUDA版本2.2 下载适合自己CU…

如何通过高防服务隐藏服务器源IP

在网络安全领域,隐藏服务器的真实源IP地址是保护服务器免受直接攻击的重要手段之一。暴露的源IP地址容易成为黑客攻击的目标,尤其是DDoS攻击、端口扫描和暴力破解等威胁。高防服务(如阿里云盾、AWS Shield等)不仅提供强大的流量清…

探索网络安全:浅析文件上传漏洞

前言 在数字化时代,网络安全已成为我们每个人都需要关注的重要议题。无论是个人隐私保护,还是企业数据安全,网络威胁无处不在。了解网络安全的基本知识和防护措施,对我们每个人来说都至关重要。 网络安全 网络安全并非只是对网…

iOS - block

1. Block 的内存管理 // Block 的基本结构 struct Block_layout {void *isa; // Block 的类型信息volatile int32_t flags; // 标志位,包含引用计数等信息int32_t reserved; // 保留字段void (*invoke)(void *, ...); // 函数指针&#x…

15.7 hana 清理online log

1.停止数据库:HDB stop 2.将整个日志目录move到其他文件夹 h4dscd:h4dadm> cd logs_temporary/ h4dscd:h4dadm> pwd /usr/sap/H4D/HDB00/backup/logs_temporary h4dscd:h4dadm> cd /hana/log/H4D/mnt00001 h4dscd:h4dadm> mv hdb00002.00003 /usr/sap/H4D/

【深度学习】自编码器(Autoencoder, AE)

自编码器(Autoencoder, AE)是一种无监督学习模型,主要用于特征提取、数据降维、去噪和生成模型等任务。它的核心思想是通过将输入压缩到一个低维的潜在空间表示(编码过程),然后再从这个潜在表示重构输入&am…

Spring官网构建Springboot工程

注意:基于Idea的 Spring Initializr 快速构建 SpringBoot 工程时需要联网。 1.进入SpringBoot官网 Spring | Home 点击QUICKSTART 点击start.spring.io进入spring initializr 2.选择依赖 3.生成工程 下载好后解压用IDEAD导入即可。

redhat安装docker 24.0.7

1、下载docker镜像包 wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz 2、解压 tar -xvf docker-24.0.7.tgz 3、解压的docker文件夹全部移动至/usr/bin目录 cd docker cp -p docker/* /usr/bin 4、注册服务 vi /usr/lib/systemd/syste…