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包有冲突

其他

异步方法返回值应该为void或者Future