一、版本升级背景

  1. 升级动机

    • Spring Boot 2.0 到 3.5 的重大更新(如Jakarta EE 9+包路径变更、GraalVM支持等)
    • JDK 1.8 到 17 的语言特性升级(如sealed class、record等)
    • 安全性与性能优化需求
  2. 升级目标

    • 兼容性验证
    • 依赖库版本适配
    • 代码兼容性修复

二、升级前依赖对比

升级前 POM.xml 核心配置
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.1.RELEASE</version>
</parent><properties><jedis.version>2.9.3</jedis.version><nacos.version>2.1.0</nacos.version><nacos.httpclient.version>4.5.8</nacos.httpclient.version><nacos.springboot.starter.version>0.2.10</nacos.springboot.starter.version>
</properties>
升级后 POM.xml 核心配置
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.5.3</version>
</parent><properties><java.version>17</java.version><jedis.version>2.9.3</jedis.version><feign.version>12.5</feign.version> <!-- Feign版本适配 --><nacos.version>2.3.2</nacos.version> <!-- Nacos Client升级 --><nacos.httpclient.version>4.5.14</nacos.httpclient.version><nacos.springboot.starter.version>0.3.0-RC</nacos.springboot.starter.version> <!-- 新坐标 -->
</properties>

再补充一个升级后的配置:

    <properties><java.version>17</java.version> <!-- 升级JDK版本 --><maven.compiler.release>17</maven.compiler.release><feign.version>12.5</feign.version> <!-- 升级Feign --><log4j2.version>2.23.1</log4j2.version> <!-- 升级Log4j2 --><nacos.version>2.3.2</nacos.version> <!-- 升级Nacos Client --><nacos.httpclient.version>4.5.14</nacos.httpclient.version><nacos.springboot.starter.version>0.3.0-RC</nacos.springboot.starter.version> <!-- 新坐标 --><jackson.version>2.18.2</jackson.version> <!-- 升级Jackson --><netty.version>4.1.122.Final</netty.version> <!-- 升级Netty --><snakeyaml.version>2.2</snakeyaml.version> <!-- 升级SnakeYAML --></properties>

三、升级过程中遇到的问题及解决方案

问题一:Jasypt 解密失败
  1. 错误表现
    • 启动时报 Invalid decryptor configuration
  2. 解决方案
    • 在启动类添加注解:@EnableEncryptableProperties
    • 补充配置项(application.yml):
      jasypt:encryptor:password: your_passwordalgorithm: PBEWithMD5AndTripleDES
      
    • 补充建议
      • 检查 Jasypt 版本是否兼容 Spring Boot 3.5(推荐升级至 3.0.4+)
      • 避免使用不安全的算法(如 PBEWithMD5AndDES

问题二:Log4j 配置冲突
  1. 错误表现
    • 启动时报 No configuration file found 或依赖冲突
  2. 解决方案
    • 排除冲突依赖(通过 mvn dependency:tree 分析)
    • 显式指定 Log4j2 配置路径:
      logging:config: classpath:env/dev/log4j2.xml
      
    • 补充建议
      • Spring Boot 3.x 默认使用 Logback,若需保留 Log4j2,需显式添加依赖:
        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>
        

问题三:MyBatis 注入失败
  1. 错误表现
    • DB和mybatis的问题,遇到xxx bean that could not be found(Dao或者Mapper),无法注入
  2. 解决方案
  3. 确保目标包能被扫描到:@MapperScan(“net.xxx.prov.xxx.dao.xxx”)
  4. 配置文件加上:
mybatis.mapper-locations=classpath:/mybatis/mapper/*.xml
mybatis.config-location=classpath:/mybatis/mybatis-config.xml
  1. 看看配置类是否有注入,没有配置类请加上:
    MybatisConfig.class:
@Configuration
@MapperScan(basePackages = "net.xxxx.prov.xxx.dao.xxx", sqlSessionTemplateRef = "SqlSessionTemplate", sqlSessionFactoryRef = "SqlSessionFactory")
public class MybatisConfig {@Bean(name = "SqlSessionFactory")public SqlSessionFactory SqlSessionFactory(@Qualifier("DataSource") DataSource DataSource) throws Exception {SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();sessionFactory.setDataSource(myhkbnDataSource);sessionFactory.setConfigLocation(new PathMatchingResourcePatternResolver().getResource("/mybatis/mybatis-config.xml"));sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("/mybatis/mapper/xxx/*.xml"));return sessionFactory.getObject();}@Bean(name = "SqlSessionTemplate")public SqlSessionTemplate SqlSessionTemplate(@Qualifier("SqlSessionFactory") SqlSessionFactory SqlSessionFactory){return new SqlSessionTemplate(SqlSessionFactory);}
}
  1. 如果绑定了配置文件前缀,需要添加配置类
@Configuration
public class DataSourceConfig {@Bean(name = "DataSource")@ConfigurationProperties(prefix = "spring.datasource.xxx") // 绑定配置文件中的前缀public DataSource DataSource() {return DataSourceBuilder.create().build();}
}
  1. 问题:jdbcUrl is required with driverClassName
    解决:spring.datasource.xxx.url 改成:spring.datasource.xxx.jdbc-url
  • 补充建议
    • 检查 MyBatis 版本是否兼容 Spring Boot 3.5(推荐升级至 3.5.10+)
    • 使用 @ConfigurationProperties 绑定数据源时,确保前缀正确(如 spring.datasource.xxx

问题四:Redis 连接失败
  1. 错误表现
    • RedisConnectionFailureException 或 SSL 配置异常,问题:RedisConnectionFailureException: Cannot get Jedis connection at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.fetchJedisConnector(JedisConnectionFactory.java:932)

解决:检查配置文件,新版的配置前缀改名了,特别注意ssl的配置,多了个enabled,源码位置:org.springframework.boot.autoconfigure.data.redis.RedisProperties

  1. 解决方案
    • 注意 Spring Boot 3.x 默认使用 Lettuce,而非 Jedis
    • 更新 Redis 配置(application.yml):
      spring:data:redis:host: 127.0.0.1port: 6379timeout: 5000mslettuce:pool:max-active: 500max-idle: 250min-idle: 0max-wait: 5000msssl:enabled: true
      
    • 补充建议
      • 若仍需使用 Jedis,需显式添加依赖并排除 Lettuce
      • 测试 Redis 服务的 SSL 证书是否有效

四、JDK 1.8 升级至 17 的注意事项

  1. 语言特性变更
    • 移除 javax.xml.bind 等模块(需手动添加依赖)
    • 使用 recordssealed class 优化代码
  2. JVM 参数调整
    • 默认垃圾回收器改为 G1(无需额外配置)
    • 检查 -XX:+UseParallelGC 等参数是否仍适用
  3. 第三方库兼容性
    • 确保所有依赖支持 JDK 17(如 Jackson、Hibernate 等)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92777.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92777.shtml
英文地址,请注明出处:http://en.pswp.cn/web/92777.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

级数学习笔记

级数学习笔记 一、数学基础 1. 数项级数&#xff08;Number Series&#xff09; 数项级数是指形如&#xff1a; ∑(n1 to ∞) aₙ a₁ a₂ a₃ ...的无穷和。 1.1 收敛性判别法 比较判别法比值判别法根值判别法积分判别法莱布尼茨判别法&#xff08;交错级数&#xff09; 2…

Linux811 YUM;SHELL:if else fi,for

vsftpdok [rootweb ~]# vim vsftpdok.sh 您在 /var/spool/mail/root 中有新邮件 [rootweb ~]# cat vsftpdok.sh rpm -ql vsftpd >/dev/null 2>&1 if [ $? -eq 0 ];then echo "OK" else yum install vsftpd -y if [ $? -eq 0 ];then echo "install o…

运维学习Day20——MariaDB数据库管理

文章目录MariaDB 数据库管理介绍 MariaDB数据库介绍数据库种类关系数据库MariaDB 介绍部署 MariaDB安装 MariaDB加固 MariaDB连接 MariaDB配置 MariaDBMariaDB 中 SQL描述 SQL连接数据库数据库操作查询数据库列表使用数据库创建数据库删除数据库表操作环境准备查询表查询表列表…

itertools:迭代器函数

文章目录一、合并和分解迭代器1、chain&#xff1a;首尾相接2、zip / zip_longest&#xff1a;对齐取数3、islice&#xff1a;切片4、tee&#xff1a;分裂二、转换输入1、map / starmap&#xff1a;函数映射三、生成新值1、count&#xff1a;生成连续整数2、repeat&#xff1a;…

【AI论文】序列标注任务广义化研究(SFT广义化):基于奖励修正的强化学习视角

摘要&#xff1a;我们针对大语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;的监督微调&#xff08;Supervised Fine-Tuning&#xff0c;SFT&#xff09;提出了一种简单但具有理论依据的改进方法&#xff0c;以解决其与强化学习&#xff08;Reinforcemen…

(已解决)Mac 终端上配置代理

说明&#xff1a;为了便于理解&#xff0c;本文描述略显“抽象”与“潦草”&#xff0c;为了过审&#xff0c;仅供学习交流使用。&#x1f680; 简洁流程版启动工具 点击图标&#xff0c;复制它给出的终端命令将这段内容粘贴进你的配置文件中&#xff08;~/.zshrc 或 ~/.bash_p…

Anti-Aliasing/Mip-NeRF/Zip-NeRF/multi-scale representation

前言 CSDN的文章写太多&#xff0c;都不记得之前写的有什么了&#xff0c;但习惯了在这里记录&#xff0c;先写上吧。关于multi-scale representation又是看着忘着&#xff0c;还是写下点什么比较啊。时看时新&#xff0c;还是想吐槽自己看论文太不认真了。下面直接按照文章顺序…

板块三章节3——NFS 服务器

NFS 服务器 NFS 服务介绍 NFS 是Network File System的缩写&#xff0c;即网络文件系统&#xff0c;最早由Sun公司开发&#xff0c;**用来在UNIX&Linux系统间实现磁盘文件共享的一种方法。**它的主要功能是通过网络让不同的主机系统之间可以共享文件或目录。NFS客户端&…

数学建模——最大最小化模型

1.概念最大最小化模型&#xff08;Maximin Model&#xff09;是一种优化方法&#xff0c;旨在最大化最坏情况下的收益或最小化最坏情况下的损失。常见的现实问题有&#xff1a;求最大值的最小化问题最大风险的最低限度最小化最坏情况下的损失等2.一般数学模型 (找最大值里面最小…

【JAVA】使用系统音频设置播放音频

代码直接可以运行 import javax.sound.sampled.*; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets;public class SystemDefaultAudioPlayer {// 强制使用的通用音频格式private st…

[CSP-J 2021] 小熊的果篮

题目 12代码 #include <bits/stdc.h> using namespace std; const int N2e55; struct node{int pre,//上一个水果块(对于水果就是上个水果)l,//块开始的序号&#xff0c;左边界 d,//块类型&#xff0c;0/1id,//水果序号 r,//块结束的序号&#xff0c;右边界 next;//下一块…

【C++】STL二叉搜索树——map与set容器的基础结构

目录 前言 1.二叉搜索树的概念 1.1基本结构 1.2性能分析 2.二叉搜索树的实现 2.1创建 2.2插入 2.3查找与遍历 2.4删除 3.二叉搜索树类代码 前言 C中STL的map与set容器广泛应用于实践过程中&#xff0c;本文将详细分析容器最基础的二叉搜索树结构&#xff0c;为后续map…

基于Spring Boot和SSE的实时消息推送系统

一、SSE技术深度解析 1.1 协议工作原理 #mermaid-svg-u7ZBlEsXcn68R5a8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-u7ZBlEsXcn68R5a8 .error-icon{fill:#552222;}#mermaid-svg-u7ZBlEsXcn68R5a8 .error-text{fi…

Day 40 训练和测试的规范写法

知识点回顾&#xff1a; 彩色和灰度图片测试和训练的规范写法&#xff1a;封装在函数中展平操作&#xff1a;除第一个维度batchsize外全部展平dropout操作&#xff1a;训练阶段随机丢弃神经元&#xff0c;测试阶段eval模式关闭dropout 作业&#xff1a;仔细学习下测试和训练代…

分析代码并回答问题

代码 <template><div>Counter: {{ counter }}</div><div>Double Counter: {{ doubleCounter }}</div> </template><script setup lang"ts"> import { ref, computed } from "vue";const counter ref(0);const …

在macOS上扫描192.168.1.0/24子网的所有IP地址

在macOS上扫描192.168.1.0/24子网的所有IP地址&#xff0c;可以通过终端命令实现。以下是几种常用方法&#xff1a; 使用ping命令循环扫描 打开终端执行以下脚本&#xff0c;会逐个ping测试192.168.1.1到192.168.1.254的地址&#xff0c;并过滤出有响应的IP&#xff1a; for i …

Java基础05——类型转换(本文为个人学习笔记,内容整理自哔哩哔哩UP主【遇见狂神说】的公开课程。 > 所有知识点归属原作者,仅作非商业用途分享)

Java基础05——类型转换 类型转换 由于Java是强类型语言&#xff0c;所以要进行有些运算的时候&#xff0c;需要用到类型转换。 如&#xff1a;byte(占1个字节)&#xff0c;short(占2个字节)&#xff0c;char(占2个字节)→int(4个字节)→long(占8个字节)→float(占4个字节)→do…

mysql基础(二)五分钟掌握全量与增量备份

全量备份 Linux环境 数据备份 数据库的备份与恢复有多中方法&#xff0c;通过mysql自带的mysqldump工具可对数据库进行备份。语法&#xff1a; mysqldump -u username -p password --databases db_name > file_name .sql说明&#xff1a; -u参数指定用户名&#xff0c;usern…

使用Windbg分析多线程死锁项目实战问题分享

目录 1、问题描述 2、使用.effmach x86命令切换到32位上下文 3、切换到UI线程&#xff0c;发现UI线程死锁了 4、使用!locks命令查看临界区锁的详细信息&#xff0c;遇到了问题 5、使用dt命令查看临界区对象信息&#xff0c;找到发生死锁的多个线程 6、用户态锁与内核态锁…

防火墙组网方式总结

一、部署模式&#xff1a;灵活适配多样网络环境下一代防火墙&#xff08;NGAF&#xff09;具备极强的网络适应能力&#xff0c;支持五种核心部署模式&#xff0c;可根据不同网络需求灵活选择。路由模式&#xff1a;防火墙相当于路由器&#xff0c;位于内外网之间负责路由寻址&a…