项目由于安全漏洞扫描,需要将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过程中遇到的一些问题及解决方案,如有更好的方案欢迎交流。