微服务项目 - SpringBoot 2.x 升级到 SpringBoot 3.2.5,保姆级避坑

本文详细记录了将基于 JDK17、SpringBoot 2.6.3、SpringCloud 2021.0.1 的微服务项目升级到 SpringBoot 3.2.5 的过程,涉及MyBatis-Plus、MySQL、javax到jakarta的迁移、Redis和ElasticSearch的配置更改,以及WARN Bean处理等常见问题和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 免费查看本文章可前往我的网站http://chenyikang.xyz/ts-blog/#/index/explore

目录

一、前言

二、取经之路

2.1、依赖版本情况

2.2、MyBatis-Plus 依赖改变

2.3、MySQL 依赖改变

2.4、javax => jakarta

2.5、Redis 配置更改

2.6、ElasticSearch 版本兼容问题

2.7、WARN Bean 处理

2.8、数据库配置,JPA 依赖 

2.9、单元测试依赖相关


一、前言


a)先说结论:收益没有特别直观的感受,并且迁移成本比较高,坑很多(有时候一个坑能卡上几个小时,别问我是怎么过来的),如果是新项目,可以试试~

b)改造的项目是一个 AI 图片社区,基于 JDK17、SpringBoot 2.6.3、SpringCloud 2021.0.1 的微服务项目,主要使用到的中间件有 MySQL、MongoDB、Redis、RabbitMQ、ElasticSearch、Nacos...  就是说,五脏俱全,该有的坑都有了...

c)升级的主要原因:SpringCloudAlibaba 出 2023 (之前一直以为要凉了...)!  总的来讲——兴趣 + 趋势

截至 2024/5/11,

### 配置 Spring Boot 3.2.5 和 MyBatis-Plus 为了在 Spring Boot 3.2.5 中成功集成 MyBatis-Plus,需要特别注意版本兼容性和配置细节。以下是具体的实现方法: #### 1. 添加 Maven 依赖 确保 `pom.xml` 文件中包含以下依赖项。由于 Spring Boot 版本较高,需确认使用的 MyBatis-Plus 版本与其兼容。 ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.5</version> <!-- 确保此版本与Spring Boot 3.x兼容 --> </dependency> <!-- 数据库驱动 (以MySQL为例) --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> ``` 上述代码片段展示了如何引入 MyBatis-Plus 及其所需的数据库连接器[^1]。 #### 2. 配置 application.yml 或 application.properties 在项目的资源配置文件中定义数据源和 MyBatis-Plus 的相关参数。 ##### 使用 YAML 格式: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC username: root password: your_password driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启SQL日志打印 mapper-locations: classpath*:mapper/*.xml # 映射XML路径 ``` 以上配置指定了 MySQL 数据源及其属性,并设置了 MyBatis-Plus 的映射 XML 路径和 SQL 日志输出方式[^2]。 #### 3. 创建实体类 创建一个简单的实体类用于测试。假设有一个名为 `User` 的表,则对应的 Java 实体如下所示: ```java import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; @TableName("user") // 对应数据库中的表名 public class User { private Long id; @TableField("username") private String name; private Integer age; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } } ``` 通过注解的方式绑定字段到数据库列[^3]。 #### 4. 定义 Mapper 接口 Mapper 接口继承自 `BaseMapper<T>` 类型接口,从而获得 CRUD 方法支持。 ```java import com.baomidou.mybatisplus.core.mapper.BaseMapper; public interface UserMapper extends BaseMapper<User> {} ``` 无需编写任何具体实现逻辑,因为这些操作已被内置提供。 #### 5. 处理潜在的兼容性问题 如果遇到类似于 `Invalid value type for attribute &#39;factoryBeanObjectType&#39;` 的错误,请检查是否存在冲突的 Starter 包或其他第三方插件干扰。必要时升级或调整 MyBatis-Spring 启动器至最新稳定版[^4]。 --- ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈亦康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值