当前位置:   article > 正文

JeecgBoot 框架升级 Spring Boot 3.1.5

spring boot 3.1.5
Spring Boot

从 2.7.10升级到3.1.5有以下几个点需要注意。

  • JDK版本支持从JDK 17-19版本
  • javax.servlet切换到jakarta.servlet
  • spring.redis配置切换为spring.data.redis
  • Spring Cloud 2022.0.4
  • Spring Cloud Alibaba 2022.0.0.0

除以上三点外,其它都是平滑升级,不过这也只是相对于我们应用Spring Boot的用户来说。不过对于第二点,属于是破坏性升级了,需要将项目中引用的javax.servlet替换成jakarta.servlet。

spring boot升级参考文档:
Spring Boot 3.0 Migration Guide · spring-projects/spring-boot Wiki · GitHub

spring cloud升级参考文档:
Spring Cloud

spring cloud alibaba升级参考文档:
版本发布说明 | Spring Cloud Alibaba

Shiro

前面讲到由于Spring Boot内部的servlet包换掉了,jeecg框架使用shiro以及spring boot集成,所以shiro需要升级,不过还好shiro官方给这个点提供了支持,以下是shiro的升级替换。

需要注意的是,spring boot 3.1.5对jedis的版本做了提升,提升后shiro无法兼容,所以只能在项目进行降版本处理。

shiro升级参考文档:
Java17和springboot3.0使用shiro报ClassNotFoundException-CSDN博客

  1. <!--shiro-->
  2. <dependency>
  3. <groupId>org.apache.shiro</groupId>
  4. <artifactId>shiro-spring-boot-starter</artifactId>
  5. <version>${shiro.version}</version>
  6. <exclusions>
  7. <exclusion>
  8. <groupId>org.apache.shiro</groupId>
  9. <artifactId>shiro-spring</artifactId>
  10. </exclusion>
  11. </exclusions>
  12. </dependency>
  13. <!-- shiro-redis -->
  14. <dependency>
  15. <groupId>org.crazycake</groupId>
  16. <artifactId>shiro-redis</artifactId>
  17. <version>${shiro-redis.version}</version>
  18. <exclusions>
  19. <exclusion>
  20. <groupId>org.apache.shiro</groupId>
  21. <artifactId>shiro-core</artifactId>
  22. </exclusion>
  23. <exclusion>
  24. <artifactId>checkstyle</artifactId>
  25. <groupId>com.puppycrawl.tools</groupId>
  26. </exclusion>
  27. </exclusions>
  28. </dependency>
  29. <!-- shiro 无法使用 spring boot 3.X 自带的jedis,降版本处理 -->
  30. <dependency>
  31. <groupId>redis.clients</groupId>
  32. <artifactId>jedis</artifactId>
  33. <version>2.9.0</version>
  34. </dependency>
  35. <dependency>
  36. <groupId>org.apache.shiro</groupId>
  37. <artifactId>shiro-spring</artifactId>
  38. <classifier>jakarta</classifier>
  39. <version>${shiro.version}</version>
  40. <!-- 排除仍使用了javax.servlet的依赖 -->
  41. <exclusions>
  42. <exclusion>
  43. <groupId>org.apache.shiro</groupId>
  44. <artifactId>shiro-core</artifactId>
  45. </exclusion>
  46. <exclusion>
  47. <groupId>org.apache.shiro</groupId>
  48. <artifactId>shiro-web</artifactId>
  49. </exclusion>
  50. </exclusions>
  51. </dependency>
  52. <!-- 引入适配jakarta的依赖包 -->
  53. <dependency>
  54. <groupId>org.apache.shiro</groupId>
  55. <artifactId>shiro-core</artifactId>
  56. <classifier>jakarta</classifier>
  57. <version>${shiro.version}</version>
  58. </dependency>
  59. <dependency>
  60. <groupId>org.apache.shiro</groupId>
  61. <artifactId>shiro-web</artifactId>
  62. <classifier>jakarta</classifier>
  63. <version>${shiro.version}</version>
  64. <exclusions>
  65. <exclusion>
  66. <groupId>org.apache.shiro</groupId>
  67. <artifactId>shiro-core</artifactId>
  68. </exclusion>
  69. </exclusions>
  70. </dependency>
knife4j

knife4j对于spring boot 3.X版本提供了支持,不过相当于spring boot 2.X的版本来说,差异比较大,从springfox转换成了springdoc,不能做到平滑升级,以下是需要替换的注解列表.

knife4j升级参考文档:

Knife4j版本参考 | Knife4j

https://springdoc.org/#migrating-from-springfox

  • @Api → @Tag
  • @ApiIgnore → @Parameter(hidden = true) or @Operation(hidden = true) or @Hidden
  • @ApiImplicitParam → @Parameter
  • @ApiImplicitParams → @Parameters
  • @ApiModel → @Schema
  • @ApiModelProperty(hidden = true) → @Schema(accessMode = READ_ONLY)
  • @ApiModelProperty → @Schema
  • @ApiOperation(value = "foo", notes = "bar") → @Operation(summary = "foo", description = "bar")
  • @ApiParam → @Parameter
  • @ApiResponse(code = 404, message = "foo") → @ApiResponse(responseCode = "404", description = "foo")

同样在初始化文档对象上也有区别,以下前后替换

  1. [@Bean](https://my.oschina.net/bean)
  2. public GroupedOpenApi swaggerOpenApi() {
  3. return GroupedOpenApi.builder()
  4. .group("default")
  5. .packagesToScan("org.jeecg")
  6. .build();
  7. }
  8. [@Bean](https://my.oschina.net/bean)
  9. public OpenAPI customOpenAPI() {
  10. return new OpenAPI()
  11. .info(new Info()
  12. .title("JeecgBoot 后台服务API接口文档")
  13. .version("1.0")
  14. .contact(new Contact().name("北京国炬信息技术有限公司").url("www.jeccg.com").email("jeecgos@163.com"))
  15. .description( "后台API接口")
  16. .termsOfService("NO terms of service")
  17. .license(new License().name("Apache 2.0").url("http://www.apache.org/licenses/LICENSE-2.0.html"))
  18. );
  19. }
  20. // ---------------------------替换后---------------------
  21. [@Bean](https://my.oschina.net/bean)
  22. public GroupedOpenApi swaggerOpenApi() {
  23. return GroupedOpenApi.builder()
  24. .group("default")
  25. .packagesToScan("org.jeecg")
  26. .build();
  27. }
  28. [@Bean](https://my.oschina.net/bean)
  29. public OpenAPI customOpenAPI() {
  30. return new OpenAPI()
  31. .info(new Info()
  32. .title("JeecgBoot 后台服务API接口文档")
  33. .version("1.0")
  34. .contact(new Contact().name("北京国炬信息技术有限公司").url("www.jeccg.com").email("jeecgos@163.com"))
  35. .description( "后台API接口")
  36. .termsOfService("NO terms of service")
  37. .license(new License().name("Apache 2.0").url("http://www.apache.org/licenses/LICENSE-2.0.html"))
  38. );
  39. }

升级的maven地址:

  1. <dependency>
  2. <groupId>com.github.xiaoymin</groupId>
  3. <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
  4. <version>4.3.0</version>
  5. </dependency>

在knife4j 4.X版本中,首次在对swagger文档与spring cloud gateway进行了整合,提供完整的解决方案,做到了开箱即用,以下是应用案例,在jeecg中也得到了升级。

  1. <dependency>
  2. <groupId>com.github.xiaoymin</groupId>
  3. <artifactId>knife4j-gateway-spring-boot-starter</artifactId>
  4. <version>4.3.0</version>
  5. </dependency>
spring boot 3.x 生态增强平滑升级

以下为平滑升级,即更换版本即可,不需要做任何调整,jeecg框架调整如下

  1. <!-- druid -->
  2. <dependency>
  3. <groupId>com.alibaba</groupId>
  4. <artifactId>druid-spring-boot-3-starter</artifactId>
  5. <version>1.2.20</version>
  6. </dependency>
  7. <!-- 动态数据源 -->
  8. <dependency>
  9. <groupId>com.baomidou</groupId>
  10. <artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
  11. <version>4.1.3</version>
  12. </dependency>
  13. <!-- spring boot-admin -->
  14. <dependency>
  15. <groupId>de.codecentric</groupId>
  16. <artifactId>spring-boot-admin-starter-server</artifactId>
  17. <version>3.0.4</version>
  18. </dependency>
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号