springboot2.7.18 升级到3.1.5过程 Spring Boot3 从 2.7.10升级到3.1.5有以下几个点需要注意。JDK版本支持从JDK 17-19版本javax.servlet切换到jakarta.servletspring.redis配置切换为spring.data.redisSpring Cloud 2022.0.4Spring Cloud Alibaba 2022.0.0.0Spring Boot3 升级参考文档spring boot升级参考spring cloud升级参考spring cloud alibaba升级参考SpringBoot3版本代码示例GitHub - jeecgboot/JeecgBoot at springboot3查看springboot父级项目和依赖项目是否有依赖 springboot2.7.18若有责需要需要升级到3.1.5相关依赖版本!-- 微服务 -- spring-cloud.version2022.0.4/spring-cloud.version spring-cloud-alibaba.version2022.0.0.0/spring-cloud-alibaba.version alibaba.nacos.version2.0.4/alibaba.nacos.version xxl-job-core.version2.4.1/xxl-job-core.version fastjson.version2.0.43/fastjson.version aviator.version5.2.6/aviator.version pegdown.version1.6.0/pegdown.version commonmark.version0.17.0/commonmark.version knife4j-spring-boot-starter.version4.4.0/knife4j-spring-boot-starter.version !-- 数据库驱动 -- postgresql.version42.2.25/postgresql.version ojdbc6.version11.2.0.3/ojdbc6.version sqljdbc4.version4.0/sqljdbc4.version mysql-connector-java.version8.0.27/mysql-connector-java.version hutool.version5.8.25/hutool.version !-- 国产数据库驱动 -- kingbase8.version9.0.0/kingbase8.version dm8.version8.1.1.49/dm8.version !-- 积木报表-- jimureport-spring-boot-starter.version1.9.4/jimureport-spring-boot-starter.version !-- 持久层 -- mybatis-plus.version3.5.3.2/mybatis-plus.version dynamic-datasource-spring-boot-starter.version4.1.3/dynamic-datasource-spring-boot-starter.version druid.version1.2.24/druid.version commons-io.version2.11.0/commons-io.version commons.version2.6/commons.version aliyun-java-sdk-dysmsapi.version2.1.0/aliyun-java-sdk-dysmsapi.version aliyun.oss.version3.17.3/aliyun.oss.version !-- shiro -- shiro.version1.12.0/shiro.version java-jwt.version3.11.0/java-jwt.version shiro-redis.version3.2.2/shiro-redis.version codegenerate.version1.4.9/codegenerate.version autopoi-web.version1.4.11/autopoi-web.version minio.version8.5.7/minio.version justauth-spring-boot-starter.version1.4.0/justauth-spring-boot-starter.version dom4j.version1.6.1/dom4j.version qiniu-java-sdk.version7.4.0/qiniu-java-sdk.version jedis.version3.8.0/jedis.version baidu-java-sdk.version4.16.19/baidu-java-sdk.version !-- Log4j2爆雷漏洞 -- !-- spring boot 3 不支持下列两个版本-- !--log4j2.version2.17.0/log4j2.version-- logback.version1.4.12/logback.version升级activiti到8.0.0添加activiti 指定仓库由于7.1.0.M6以后 官方不再将构建制品发布到maven中央仓库了而是发布在了alfresco仓库这就需要我们仓库才能正确下载依赖.在pom中添加repositories标签然后再添加repository标签。如果repositories已经有了切不要再添加而是将repository标签和里面的内容复制进去。最终效果如下repositories repository idactiviti-releases/id urlhttps://artifacts.alfresco.com/nexus/content/repositories/activiti-releases/url /repository我activiti项目中的全部依赖含activitiproperties activiti.version8.0.0/activiti.version pagehelper.boot.version1.4.6/pagehelper.boot.version /properties dependencies !-- pagehelper 分页插件 -- dependency groupIdcom.github.pagehelper/groupId artifactIdpagehelper-spring-boot-starter/artifactId version${pagehelper.boot.version}/version /dependency !--activiti-- dependency groupIdorg.activiti/groupId artifactIdactiviti-dependencies/artifactId version${activiti.version}/version scopeimport/scope typepom/type /dependency dependency groupIdorg.activiti/groupId artifactIdactiviti-spring-boot-starter/artifactId version${activiti.version}/version exclusions exclusion groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-jpa/artifactId /exclusion exclusion artifactIdmybatis/artifactId groupIdorg.mybatis/groupId /exclusion exclusion artifactIdcommons-io/artifactId groupIdcommons-io/groupId /exclusion exclusion artifactIdspring-jdbc/artifactId groupIdorg.springframework/groupId /exclusion exclusion artifactIdjakarta.persistence-api/artifactId groupIdjakarta.persistence/groupId /exclusion /exclusions /dependency dependency groupIdorg.springframework/groupId artifactIdspring-jdbc/artifactId version5.3.30/version !-- 根据你的Spring版本调整 -- /dependency dependency groupIdorg.jeecgframework.boot/groupId artifactIdjeecg-system-biz/artifactId version3.7.3/version /dependency !--引入微服务启动依赖 starter-- dependency groupIdorg.jeecgframework.boot/groupId artifactIdjeecg-boot-starter3-cloud/artifactId version3.7.3/version /dependency dependency groupIdorg.hibernate/groupId artifactIdhibernate-core/artifactId exclusions exclusion groupIdcommons-collections/groupId artifactIdcommons-collections/artifactId /exclusion /exclusions /dependency dependency groupIdcom.baomidou/groupId artifactIdmybatis-plus-boot-starter/artifactId version3.5.3.1/version exclusions exclusion artifactIdjsqlparser/artifactId groupIdcom.github.jsqlparser/groupId /exclusion exclusion artifactIdmybatis/artifactId groupIdorg.mybatis/groupId /exclusion exclusion artifactIdspring-jdbc/artifactId groupIdorg.springframework/groupId /exclusion /exclusions /dependency !-- 引入定时任务依赖 -- dependency groupIdorg.jeecgframework.boot/groupId artifactIdjeecg-boot-starter-job/artifactId version3.8.0/version /dependency dependency groupIdcom.dameng/groupId artifactIdDm8JdbcDriver18/artifactId version8.1.1.49/version /dependency dependency groupIdcom.dameng/groupId artifactIdDmDialect-for-hibernate5.0/artifactId version8.1.1.49/version /dependency dependency groupIdorg.jetbrains/groupId artifactIdannotations/artifactId version26.0.2/version scopecompile/scope /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-security/artifactId /dependency dependency groupIdorg.hibernate.orm/groupId artifactIdhibernate-core/artifactId version6.6.13.Final/version exclusions exclusion artifactIdhibernate-commons-annotations/artifactId groupIdorg.hibernate.common/groupId /exclusion exclusion artifactIdjakarta.persistence-api/artifactId groupIdjakarta.persistence/groupId /exclusion /exclusions !-- Spring Boot 3.1.x兼容版本 -- /dependency dependency groupIdorg.hibernate/groupId artifactIdhibernate-jpamodelgen/artifactId version6.6.13.Final/version typepom/type scopeprovided/scope /dependency /dependencies因activiti默认集成Security SecurityConfig 需要全部放行但升级完写法也变了注释的事boot2,下面没注释掉的是boot3的package org.jeecg.modules.activiti.config.security; //import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Configuration; //import org.springframework.security.config.annotation.web.builders.HttpSecurity; //import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; //import org.springframework.security.core.userdetails.User; //import org.springframework.security.core.userdetails.UserDetailsService; //import org.springframework.security.provisioning.InMemoryUserDetailsManager; //import org.springframework.security.web.SecurityFilterChain; // //Configuration //EnableWebSecurity //public class SecurityConfig extends WebSecurityConfigurerAdapter { // Override // public void configure(HttpSecurity http) throws Exception { // // http.authorizeRequests() // .anyRequest().permitAll().and().logout().permitAll()//配置不需要登录验证 // .and().headers().frameOptions().sameOrigin() // 解决 frame because it set X-Frame-Options to deny // .and().csrf().disable() //关闭跨站请求伪造 // ; // } //} import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.web.SecurityFilterChain; Configuration EnableWebSecurity public class SecurityConfig { Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http // 授权配置 .authorizeHttpRequests(auth - auth .anyRequest().permitAll() // 允许所有请求 ) // 登出配置 .logout(logout - logout .permitAll() // 允许所有人访问登出端点 ) // 头部配置 .headers(headers - headers .frameOptions(frame - frame .sameOrigin() // 允许同源iframe嵌套 ) ) // CSRF配置 .csrf(csrf - csrf .disable() // 禁用CSRF保护 ); return http.build(); } }#Shiro升级说明​由于Spring Boot内部的servlet包换掉了所以shiro需要升级不过还好shiro官方提供了支持以下是shiro的升级替换。需要注意的是spring boot 3.1.5对jedis的版本做了提升提升后shiro无法兼容所以只能在项目进行降版本处理。shiro升级参考文档 Java17和springboot3.0使用shiro报ClassNotFoundException_shiro java17-CSDN博客!--shiro-- dependency groupIdorg.apache.shiro/groupId artifactIdshiro-spring-boot-starter/artifactId version${shiro.version}/version exclusions exclusion groupIdorg.apache.shiro/groupId artifactIdshiro-spring/artifactId /exclusion /exclusions /dependency !-- shiro-redis -- dependency groupIdorg.crazycake/groupId artifactIdshiro-redis/artifactId version${shiro-redis.version}/version exclusions exclusion groupIdorg.apache.shiro/groupId artifactIdshiro-core/artifactId /exclusion exclusion artifactIdcheckstyle/artifactId groupIdcom.puppycrawl.tools/groupId /exclusion /exclusions /dependency !-- shiro 无法使用 spring boot 3.X 自带的jedis降版本处理 -- dependency groupIdredis.clients/groupId artifactIdjedis/artifactId version2.9.0/version /dependency dependency groupIdorg.apache.shiro/groupId artifactIdshiro-spring/artifactId classifierjakarta/classifier version${shiro.version}/version !-- 排除仍使用了javax.servlet的依赖 -- exclusions exclusion groupIdorg.apache.shiro/groupId artifactIdshiro-core/artifactId /exclusion exclusion groupIdorg.apache.shiro/groupId artifactIdshiro-web/artifactId /exclusion /exclusions /dependency !-- 引入适配jakarta的依赖包 -- dependency groupIdorg.apache.shiro/groupId artifactIdshiro-core/artifactId classifierjakarta/classifier version${shiro.version}/version /dependency dependency groupIdorg.apache.shiro/groupId artifactIdshiro-web/artifactId classifierjakarta/classifier version${shiro.version}/version exclusions exclusion groupIdorg.apache.shiro/groupId artifactIdshiro-core/artifactId /exclusion /exclusions /dependency#knife4j升级说明​knife4j对于spring boot 3.X版本提供了支持不过相当于spring boot 2.X的版本来说差异比较大从springfox转换成了springdoc不能做到平滑升级以下是需要替换的注解列表.knife4j升级参考文档​Knife4j版本参考 | Knife4jOpenAPI 3 Library for spring-bootknife4j 2版本与3版注解变化如下​便于大家快速升级官方写了一个Python脚本可以快速将整个项目升级为springdoc注解。Api→TagApiIgnore→Parameter(hidden true)orOperation(hidden true)orHiddenApiImplicitParam→ParameterApiImplicitParams→ParametersApiModel→SchemaApiModelProperty(hidden true)→Schema(accessMode READ_ONLY)ApiModelProperty→SchemaApiOperation(value foo, notes bar)→Operation(summary foo, description bar)ApiParam→ParameterApiResponse(code 404, message foo)→ApiResponse(responseCode 404, description foo)同样在初始化文档对象上也有区别以下前后替换[Bean](https://my.oschina.net/bean) public GroupedOpenApi swaggerOpenApi() { return GroupedOpenApi.builder() .group(default) .packagesToScan(org.jeecg) .build(); } [Bean](https://my.oschina.net/bean) public OpenAPI customOpenAPI() { return new OpenAPI() .info(new Info() .title(JeecgBoot 后台服务API接口文档) .version(1.0) .contact(new Contact().name(北京国炬信息技术有限公司).url(www.jeccg.com).email(jeecgos163.com)) .description( 后台API接口) .termsOfService(NO terms of service) .license(new License().name(Apache 2.0).url(http://www.apache.org/licenses/LICENSE-2.0.html)) ); } // ---------------------------替换后--------------------- [Bean](https://my.oschina.net/bean) public GroupedOpenApi swaggerOpenApi() { return GroupedOpenApi.builder() .group(default) .packagesToScan(org.jeecg) .build(); } [Bean](https://my.oschina.net/bean) public OpenAPI customOpenAPI() { return new OpenAPI() .info(new Info() .title(JeecgBoot 后台服务API接口文档) .version(1.0) .contact(new Contact().name(北京国炬信息技术有限公司).url(www.jeccg.com).email(jeecgos163.com)) .description( 后台API接口) .termsOfService(NO terms of service) .license(new License().name(Apache 2.0).url(http://www.apache.org/licenses/LICENSE-2.0.html)) ); }升级的maven地址dependency groupIdcom.github.xiaoymin/groupId artifactIdknife4j-openapi3-jakarta-spring-boot-starter/artifactId version4.3.0/version /dependency在knife4j 4.X版本中首次在对swagger文档与spring cloud gateway进行了整合提供完整的解决方案做到了开箱即用以下是应用案例dependency groupIdcom.github.xiaoymin/groupId artifactIdknife4j-gateway-spring-boot-starter/artifactId version4.3.0/version /dependency#spring boot 3.x 生态平滑升级​以下为平滑升级即更换版本即可不需要做任何调整!-- druid -- dependency groupIdcom.alibaba/groupId artifactIddruid-spring-boot-3-starter/artifactId version1.2.20/version /dependency !-- 动态数据源 -- dependency groupIdcom.baomidou/groupId artifactIddynamic-datasource-spring-boot3-starter/artifactId version4.1.3/version /dependency !-- spring boot-admin -- dependency groupIdde.codecentric/groupId artifactIdspring-boot-admin-starter-server/artifactId version3.0.4/version /dependency#META-INF升级spring.factories​新建文件org.springframework.boot.autoconfigure.AutoConfiguration.imports把需要自动加载的启动类一行一个全限定名就可以了 替换原来的spring.factories升级小技巧​模块快速升级springboot3改造过程第一步切换项目JDK和Maven的JDK为17 第二步替换过时类 搜索javax.servlet.http.HttpServletRequest 替换为jakarta.servlet.http.HttpServletRequest 搜索javax.servlet.http.HttpServletResponse 替换为jakarta.servlet.http.HttpServletRequest 搜索javax.websocket 替换为jakarta.websocket 搜索Api替换为//Api 搜索AutoLowApp替换为//AutoLowApp 搜索io.swagger.annotations.ApiModel删掉 搜索io.swagger.annotations.Api删掉 搜索javax.annotation.Resource删掉开源删除类搜索org.jeecg.common.constant.enums.LowAppAopEnum删掉 搜索org.jeecg.common.aspect.annotation.AutoLowApp删掉 搜索org.jeecg.common.bpm.api.IBpmBaseExtApi删掉mvnhelp解决冲突依赖冲突这个事情就不详细讲了每个项目的情况都不一样你可以用mvnhelp解决冲突若有依赖冲突报错再想着去Exclude掉不用把显示的所有有冲突依赖全部去掉那样项目可能反而起不来Maven Helper mvn项目冲突如何解决_maven helper运行时冲突-CSDN博客