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

server/2024/12/22 17:01:49/
废话
最近使用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

java">@Schema(name = "OaDeptDTO对象", description = "部门表")
public class OaDeptDTO implements Serializable {@Serialprivate 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
java">@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

三、接口写法变动

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

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

报错信息:

java">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

解决方案:

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

http://www.ppmy.cn/server/152274.html

相关文章

实验13 C语言连接和操作MySQL数据库

一、安装MySQL 1、使用包管理器安装MySQL sudo apt update sudo apt install mysql-server2、启动MySQL服务&#xff1a; sudo systemctl start mysql3、检查MySQL服务状态&#xff1a; sudo systemctl status mysql二、安装MySQL开发库 sudo apt-get install libmysqlcli…

【MAC】深入浅出 Homebrew 下 Nginx 的安装与配置指南

硬件&#xff1a;Apple M4 Pro 16寸 系统&#xff1a; macos Sonoma 15.1.1 Nginx 是一款高性能的 Web 服务器和反向代理服务器&#xff0c;广泛应用于全球各地的网站和企业应用中。本文将详细介绍如何在 macOS 环境下使用 Homebrew 安装、启动、管理以及优化配置 Nginx&#x…

macOS brew安装

brew 可以用命令在mac上安装、卸载、更新各种软件包。它是一个用ruby写的软件&#xff0c;软件是托管在github上的。 1、安装brew&#xff0c;一般选择清华源&#xff0c;如果之前安装过brew&#xff0c;执行下面命令时会自动备份old_homebrew&#xff0c;按照操作执行即可&…

关于小程序内嵌h5打开新的小程序

关于小程序内嵌h5打开新的小程序 三种方式 https://juejin.cn/post/7055551463489011749 只依赖于h5本身的就是 https://huaweicloud.csdn.net/64f97ebb6b896f66024ca16c.html https://juejin.cn/post/7055551463489011749 navigateToMiniProgram 故小程序webview里的h5无法…

Java面试被问到GC相关问题如何回答?

前言 众所周知&#xff0c;Java在运行时将内存划分为五个主要部分&#xff1a;程序计数器、虚拟机栈、本地方法栈、堆以及方法区。值得注意的是&#xff0c;程序计数器、虚拟机栈和本地方法栈这三个区域的内存管理相对简单&#xff0c;它们的生命周期与线程同步&#xff0c;即…

8086汇编(16位汇编)学习笔记00.DEBUG命令使用解析及范例大全

8086汇编(16位汇编)学习笔记00.DEBUG命令使用解析及范例大全-C/C基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net[md]启动 Debug&#xff0c;它是可用于测试和调试 MS-DOS 可执行文件的程序。  Debug [[drive:][path] filename [parameters]]  参数  [drive:…

Visio——导出的PDF文件缺乏嵌入字体的解决办法 / 设置导出的PDF文件添加嵌入字体的方法

导出PDF时&#xff0c;勾选 “符合PDF/A” 选项 这样就导出的PDF文件添加了嵌入字体了。

AI大模型与传统模型的六大区别

大模型&#xff0c;也被称为大型语言模型&#xff0c;是指使用大规模数据集训练的深度学习模型。 这些模型通常具有数十亿个参数&#xff0c;能够学习复杂的语言模式、生成连贯的文本、翻译语言、回答问题等。 大模型可以应用于多种自然语言处理任务&#xff0c;如文本生成、…