原创

SpringBoot2.x版本升级到Spring 3.2.7版本

温馨提示:
本文最后更新于 2024年09月11日,已超过 226 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

最近领导把一个老项目的jdk升级到21,给了我一个需求让我把这个项目的SpringBoot/Cloud版本升级到3.2.0版本,所以比较忙没怎么写博客今天就记录一下这个升级。

其实升级也不复杂,主要是各种中间件需要升级和他们的之间的兼容性,下面列举的是一些比较难升级的。

步骤1:先把SpringBoot/Cloud和SpringCloud Alibaba版本给升级了,先去SpringCloud官网找一下哪个版本和SpringBoot3.2.0匹配,再去SpringCloud Alibaba官网找一下哪个版本适配当前选择的SpringCloud版本,结果如下:

Spring Cloud:

Spring Cloud Alibaba:

找到对应的版本之后就可以在pom文件中替换他们的版本:

步骤2:在pom文件上替换了版本号之后,就是修改中间件的版本了,第一个修改的肯定是nacos了,这个比较好找,就在官网上写着版本号直接去nacos官网下载对应版本就可以了,然后将老的nacos配置直接copy过去就可以用了。然后升级的中间件是flowable这个流程引擎,直接去官网找到对应Spring Boot3的版本,我这里找的是7.0.1,在修改完这个版本号之后去开启他的自动更新(如果版本不匹配则去更新版本):

修改一下schema.version的版本号为7.0.1.1之前是6.6.0.0然后在配置哪里设置:

flowable:
#关闭定时任务JOB
async-executor-activate: false
check-process-definitions: false
database-schema-update: true

主要还是把database-schema-update设置为true就可以了。

步骤3:弄好流程引擎之后就是SpringFox了,这东西已经停止维护4年了早就不适配SpringBoot3了所以直接把他迁移到SpringDoc,具体步骤也简单把之前springfox的依赖全部去掉,然后添加上

<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>${swagger-springdoc-openapi}</version>
</dependency>

这个依赖,设置好版本号之后把之前fox的配置全部注释掉,然后去配置哪里加上下面的配置:

springdoc:
swagger-ui:
path: /swagger-ui.html

这里配置的swagger比较简单,因为之前写的springfox的配置类我全部注释掉了(主要是一些安全配置比如使用token访问、过滤某些路径,但是这个swagger目前不对外网开放)

步骤4:spring security对于spring5和spring6的语法是不同的,所以之前的配置已经用不了,旧配置如下:

return httpSecurity
.headers().frameOptions().disable()
.and().authorizeRequests()
.antMatchers(adminContextPath + ""
, adminContextPath + ""
, adminContextPath + ""
, adminContextPath + ""
).permitAll()
.anyRequest().authenticated()
.and()
.formLogin().loginPage(adminContextPath + "")
.successHandler(successHandler).and()
.logout().logoutUrl(adminContextPath + "")
.and()
.httpBasic().and()
.csrf()
.disable()
.build();

antMatchers这个东西在spring6已经弃用了,而且语法也变了,所以按照官网的文档,将上面的代码修改如下:

return httpSecurity
.headers(headers -> headers
.frameOptions(frameOptions -> frameOptions.disable())
)
.authorizeHttpRequests(authorize -> authorize
.requestMatchers(adminContextPath + "", adminContextPath + "",
adminContextPath + "", adminContextPath + ""
).permitAll()
.anyRequest().authenticated()
)
.formLogin(formLogin -> formLogin
.loginPage(adminContextPath + "/login")
.successHandler(successHandler)
)
.logout(logout -> logout
.logoutUrl(adminContextPath + "/logout")
)
.httpBasic(withDefaults())
.csrf(csrf -> csrf.disable())
.build();

其他的升级都没什么难度,只要去官网找好对应的版本就可以了

正文到此结束