升级后:
SpringBoot:3.2 JDK:21 Springcloud:Springcloud2023.0.0 SpringAlibaba:2022.0.0
URL修改
路径匹配规则做了调整,默认情况下尾部的/的匹配规则和以前不同 3.0以前/foo/bar 等同于/foo/bar/ 3.0以后/foo/bar 不同于/foo/bar/
替换已经弃用的包
1.javax包替换,包括但是不限于persistence、validation、annotation、xml、servlet等,需要替换为jakarta中的包(Oracle收购了Sun公司,涉及到商标和版权原因,Javax改名为Jakarta迫不得已)
2.注解@Type(type = "json")等Hibernate自定义注解不可用,可以修改为
@JdbcTypeCode(SqlTypes.JSON)
或者@Type(value = JsonStringType.class)
3.Sort s = new Sort(d, sort);该构造方法已弃用,可以修改为
Sort.Order sordOrder = new Sort.Order(d,sort); Sort s = Sort.by(List.of(sordOrder));4.PageReques原来的构造方法需要修改
Pageable pageable = new PageRequest(pageNo, pageSize, Sort.Direction.ASC,"createDate");
Pageable pageable = PageRequest.of(pageNo, pageSize, s);5.new Long(),new Integer()等已经弃用,替换为Long.valueof或者Long.parseLong,或者其他支持的写法
6.sun.misc.BASE64Decoder已弃用,修改为
Base64.getDecoder().decode(key)//解码 Base64.getEncoder().encodeToString(key);//编码也可以使用其他的包
7.pom.xml需要去掉原来的网飞组件
JPA相关
1.原生的sql和Jpa不要混用,例如select caseId from t_clm_case,这样写会报错,原生sql大小写不敏感,Jpa需要和实体类中的名称相同 2.有重复列的表连接,要指定表名,select a.* from a,b,如果a,b中有重复的列名,必须带表别名,如a.* , select * from a,b会报错 3.驼峰命名。横杠前不要只有1个字母,最好不要取名叫g_id,Jpa写 findByGId会报错,如果有这种的可以修改为
@Column(name = "G_ID")
@JsonProperty("gId")
private String GId;也可以取其他的属性名,但是这样要改的地方就比较多一点 4.使用findById(),save()等的地方的dao需要修改,dao需要继承JpaRepository,没有用到里面的方法的话就不用改。 JPA变化
kafka修改
1.创建一个方法并加上@Bean注解,该方法名称在与yml文件保持一致,input名称为方法-in-0

远程调用修改
使用远程调用的地方,服务名称需要与设置的服务名称一致,大小写敏感
配置文件修改
bootstrap.yml配置文件修改,因为之前用的是eureka那一套,需要修改成nacos这一套
spring:
main:
# 路由采用的是reactive,其他服务都是servlet,当环境中只有webflux或者只有webmvc时可以不配置
web-application-type: servlet
# 是否允许循环依赖,升级到2.6.0才出现的这个问题,需要显示的配置允许循环依赖
allow-circular-references: true
application:
name: AAA
description: AA
cloud:
nacos:
discovery:
# 本地地址,如果是服务器修改成对应的地址
server-addr: 127.0.0.1:8848 #Nacos服务注册中心地址
namespace: dev
username: nacos
password: nacos
group: DEFAULT_GROUP
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr} #Nacos作为配置中心地址
file-extension: yml #指定yaml格式的配置
refresh-enabled: true #动态刷新配置
namespace: ${spring.cloud.nacos.discovery.namespace-addr}
username: ${spring.cloud.nacos.discovery.username}
password: ${spring.cloud.nacos.discovery.password}
encode: UTF-8
group: ${spring.cloud.nacos.discovery.group}
enabled: true
shared-configs:
- data-id: claims-jwt.yml
namespace: dev
refresh: true
- data-id: claims-redis.yml
namespace: dev
refresh: true
- data-id: claims-database.yml
namespace: dev
refresh: true
- data-id: claims-common.yml
namespace: dev
refresh: true
- data-id: claims-key.yml
namespace: dev
refresh: true取消使用Swagger2 ,引用的spring-plugin-core包有冲突
hibernate的变化
注解org.hibernate.annotations.Type
在老版本中注解中含有参数type

所以在使用json的时候可以有以下写法
@Type(type = "json")
@Column(name="PROTECTION_MONTH" )
private List<String> protectionMonth;以上写法可以将数据以json字符串格式存储
新版本中没有此参数了

需要使用以下写法:
@Column(name="gongu_companys")
@Type(value = JsonStringType.class)
private List<InvestigatorBean> gonguCompanys;其他
异步方法返回值应该为void或者Future 
