news 2026/4/15 5:50:12

SpringBoot 3.4.x踩坑记录及解决方案(持续更新)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot 3.4.x踩坑记录及解决方案(持续更新)
废话
最近使用JDK17+Spring Boot3.4.0 做新项目遇到的一些坑,记录并且给出一些实际的解决方案
一、集成Mybatis Plus 3.5.9的问题

第一:不能只引入mybatis-plus-spring-boot3-starter依赖了,需要配合mybatis-plus-jsqlparser

<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-spring-boot3-starter</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-jsqlparser</artifactId> </dependency>

第二:版本统一管理

<dependencyManagement> <dependencies> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-bom</artifactId> <version>3.5.9</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>

详情请见:https://baomidou.com/getting-started/install/

二、集成Knife4j-OpenApi3

这个改动真的有点大,切费老鼻子劲了,不建议旧项目直接迁移,不然得改到S3赛季开战!

<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId> <version>4.4.0</version> </dependency>

1、实体类写法变动
没有@ApiModel 和@ApiModelProperty写法,全局使用@Schema

@Schema(name = "OaDeptDTO对象", description = "部门表") public class OaDeptDTO implements Serializable { @Serial private static final long serialVersionUID = 1L; @Schema(description = "主键") private Long id; @Schema(description = "父部门id",defaultValue = "0") private Long parentId; @Schema(description = "部门名称") private String deptName; @Schema(description = "部门编码") private String deptCode; @Schema(description = "状态(0正常 1停用)") private Integer status; }

2 接口类写法

没有@Api和@ApiOperation写法

旧版本

新版本

@Api

@Tag

@ApiOperationi

@Operation

@Tag(name = "部门表") @RestController @RequiredArgsConstructor @RequestMapping("/oa/dept") public class OaDeptController { private final OaDeptAppService oaDeptAppService; @Operation(summary = "新增部门") @PostMapping("/add") public Result<Boolean> add(@RequestBody OaDeptDTO oaDept) { return Result.ok(oaDeptAppService.add(oaDept)); } }

注意注意请注意(呜呜呜~~~~)

Knife4j-OpenApi3存在一个大问题,如果你的项目中存在全局异常拦截类,@RestControllerAdvice/@ControllerAdvice,访问接口文档会报错,这是版本得bug,所以你无需自卑也不要过度伤心,叉掉你浏览器上密密麻麻的标签页吧。

详情见issue:https://github.com/xiaoymin/knife4j/issues/865

解决方案:升级springdoc-openapi-starter-webmvc-ui 2.7.0

<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId> <version>${knife4j.version}</version> <exclusions> <exclusion> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.7.0</version> </dependency>
三、接口写法变动

之前的写法:(这样一直没毛病啊,但是3.4.0不行!!!!)

@Operation(summary = "查询数据明细") @GetMapping("/{id}") public Result<OaRoleVO> detail(@PathVariable Long id) { return Result.ok(oaRoleAppService.detail(id)); }

报错信息:

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalArgumentException: Name for argument of type [java.lang.Long] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag.] with root cause

解决方案:

@Operation(summary = "查询数据明细") @GetMapping("/{id}") public Result<OaRoleVO> detail(@PathVariable("id") Long id) { return Result.ok(oaRoleAppService.detail(id)); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 5:23:04

PDF-Extract-Kit OCR优化:低质量扫描件识别

PDF-Extract-Kit OCR优化&#xff1a;低质量扫描件识别 1. 引言&#xff1a;挑战与需求背景 在实际文档数字化过程中&#xff0c;我们经常面临一个普遍而棘手的问题——低质量扫描件的文本提取准确率低下。这类文档通常来源于老旧设备扫描、纸质文件褪色、光照不均或压缩过度…

作者头像 李华
网站建设 2026/4/6 3:29:08

科哥PDF工具箱教程:自动化脚本批量处理PDF

科哥PDF工具箱教程&#xff1a;自动化脚本批量处理PDF 1. 引言 1.1 PDF-Extract-Kit&#xff1a;智能提取的工程化实践 在科研、教育和文档数字化场景中&#xff0c;PDF 文件常包含复杂的结构元素——公式、表格、图文混排等。传统手动提取方式效率低、易出错&#xff0c;难…

作者头像 李华
网站建设 2026/4/2 12:05:33

Spring 的三种注入方式?

1. 实例的注入方式 首先来看看 Spring 中的实例该如何注入&#xff0c;总结起来&#xff0c;无非三种&#xff1a;属性注入set 方法注入构造方法注入我们分别来看下。 1.1 属性注入 属性注入是大家最为常见也是使用最多的一种注入方式了&#xff0c;代码如下&#xff1a; Servi…

作者头像 李华
网站建设 2026/4/13 13:34:30

基于深度学习 YOLOv8➕pyqt5的西红柿成熟度检测系统

基于深度学习 YOLOv8➕pyqt5的西红柿成熟度检测系统&#xff0c; 完整源码源文件已标注的数据集训练好的模型环境配置教程程序运行说明文档 可以替换自己训练的模型&#xff0c;实现检测目标自定义 blog.csdnimg.cn/direct/31c61653310648458126c961a01fd682.png) 以下文章及示…

作者头像 李华
网站建设 2026/4/10 12:10:36

HY-MT1.5部署实战:5分钟搭建企业级翻译系统

HY-MT1.5部署实战&#xff1a;5分钟搭建企业级翻译系统 在AI驱动的全球化浪潮中&#xff0c;高质量、低延迟的机器翻译能力已成为企业出海、跨语言协作的核心基础设施。腾讯近期开源的混元翻译大模型HY-MT1.5系列&#xff0c;凭借其卓越的翻译质量与灵活的部署能力&#xff0c…

作者头像 李华