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

embedded/2025/1/16 3:09:56/

背景

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

相关文章

Android SystemUI——服务启动流程(二)

在 Andorid 系统源码中,package/apps下放的是系统内置的一些 APP,例如 Settings、Camera、Phone、Message 等等。而在 framework/base/package 下,它们也是系统的 APP,SystemUI 就在此目录下。它控制着整个 Android 系统的界面,但其实他也是一个 APP,不同于一般的 APP,它…

<C++学习>C++ Boost 输入与输出教程

C Boost 输入与输出教程 Boost 提供了许多实用的工具来增强 C 的输入与输出功能,包括字符串格式化、文件操作、序列化和日志系统等。在标准 I/O 的基础上,Boost 的功能更丰富、更灵活,能够满足复杂的 I/O 场景需求。 1. Boost 中与 I/O 相关…

服务器中常见的流量攻击类型包括哪些?

在目前的互联网社会当中,流量攻击是一种较为常见且严重的网络安全威胁,流量攻击可能会导致企业中的网站出现业务中断,给企业和组织带来严重的经济损失,接下来小编就带领大家一起了解几种常见的流量攻击类型以及会给网络带来哪些危…

[读书日志]从零开始学习Chisel 第十二篇:Scala的抽象成员(敏捷硬件开发语言Chisel与数字系统设计)

9. Scala的抽象成员 9.1 抽象成员 Scala有4种抽象成员,分别是抽象val字段,抽象var字段,抽象方法和抽象类型。声明如下: scala> trait Abstract {| type T //抽象类型| def transform(x: T): T //抽象方法| val in…

vscode使用Marscode编程助手

下载 vscode 在插件里下载Marscode编程助手 插件完成 在这里点击安装,点击后这里出现AI编程插件。

力扣经典题目之120.三角形最小路径和

今天继续给大家分享一道力扣的做题心得今天这道题目是 120.三角形最小路径和 题目如下: 题目链接:三角形最小路径和 1,题目分析 这个问题要求我们在一个数字三角形中找到从顶部到底部的路径,使得路径上的数字总和最小。三角形的每…

Linux离线部署ELK

文章目录 前期准备开始安装安装elastic search安装logstash安装kibana 配置ELK配置ElasticSearch配置logstash配置kibana 启动ELK启动命令启动测试 设置ELK策略创建ILM策略将ILM策略与日志index关联查看索引是否被ILM策略管理 前期准备 ELK包含三部分软件 ElasticSearch用作搜…

模板方法模式详解

模板方法模式(Template Method Pattern)是一种行为型设计模式,它在方法中定义算法的框架,延迟到子类中实现。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。下面对模板方法模式进行详细讲解…