升级到springboot3.0遇到的问题

时间:2025-04-24 18:27:39

项目由于安全漏洞扫描,需要将spring-web版本升级到6.0及以上,由于springboot2只支持spring-web5,故需要进行升级

升级过程中遇到问题及解决方案如下

1、springboot3不支持jdk17以下版本

升级到jdk17

2、WebMvcConfigurerAdapter 不存在

改成 implements WebMvcConfigurer

3、javax在新版中很多包里面已经不存在了

javax基本上都要改为jakarta

4、RestTemplateUtil 中 httpstatus不存在

改为httpstatuscode

5、HttpSecurity中antMatchers弃用  

改为 .authorizeHttpRequests(auth -> auth
            .requestMatchers("/token/**").permitAll()
            .anyRequest().authenticated()
        )

6、springboot3启动时报Error creating bean with name 'messageSource' 

添加spring-remoting 依赖

7、启动报错找不到

参考 : Can't load IA 32-bit-****博客

8、启动后访问找不到css和js问题    

启动类需要使用@SpringBootApplication注解,不能只使用@EnableAutoConfiguration,否则不加载静态文件

9、mybatis-plus版本不兼容问题

开始是将mybatis-plus升级到3.5.5 ,但是 3.5.5 有bug 启动报错 回退到3.5.3.1
   且mybatis-spring 需要升级到3.0.3

10、代码不规范,service间有循环引用,启动会报错

调整代码,去掉代码中的循环引用

11、druid和数据库驱动版本不匹配(以sqlserver为例)

druid版本不匹配  mssql-jdbc 升级到 9.5.0.jre17-preview

druid改成 <artifactId>druid-spring-boot-3-starter</artifactId>

12、服务器tomcat启动不了

原本的tomcat9,启动到后不动也不报错 下载了一个新版本也是一样,会去解压war包但是不会加载war
    tomcat10 dbType识别不了,启动报错
    create connection RuntimeException
    : Cannot invoke "(Object)" because "" is null
    @ConfigurationProperties 在springboot3 中不能直接在方法上赋值
    tomcat11 启动闪退 好像是最低jdk要求是21

总结,只能使用tomcat10,且数据源配置加载类要重新写,不然无法正常启动

13、tomcat10中https配置

修改配置  
    <Connector
    protocol=".http11.Http11NioProtocol"
    port="443"
    maxThreads="150"
    SSLEnabled="true">
  <SSLHostConfig>
    <Certificate
      certificateKeystoreFile="c:/cert/"
      certificateKeystorePassword="xxxxxx"
      type="RSA"
      />
    </SSLHostConfig>
</Connector>

14、页面点击会报error 

产生原因是请求地址最后多了一个/ 去掉不带参数的请求的最后一个多余/

15、数据量大会报连接超时

数据库超时时间默认只有10s,修改连接数据源代码,增加 配置

16、WebSecurityConfigurerAdapter不存在,SpringSecurityOAuth已停更 

使用新的方式去写,参考 SpringBoot 集成OAuth 2.0实现认证授权服务及资源服务 - 知乎

以上就是升级springboot过程中遇到的一些问题及解决方案,如有更好的方案欢迎交流。