JeecgBoot 框架升级 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博客


		
			org.apache.shiro
			shiro-spring-boot-starter
			${shiro.version}
			
				
					org.apache.shiro
					shiro-spring
				
			
		
		
		
			org.crazycake
			shiro-redis
			${shiro-redis.version}
			
				
					org.apache.shiro
					shiro-core
				
				
					checkstyle
					com.puppycrawl.tools
				
			
		
		
		
			redis.clients
			jedis
			2.9.0
		

		
			org.apache.shiro
			shiro-spring
			jakarta
			${shiro.version}
			
			
				
					org.apache.shiro
					shiro-core
				
				
					org.apache.shiro
					shiro-web
				
			
		
		
		
			org.apache.shiro
			shiro-core
			jakarta
			${shiro.version}
		
		
			org.apache.shiro
			shiro-web
			jakarta
			${shiro.version}
			
				
					org.apache.shiro
					shiro-core
				
			
		
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")

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

[@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("jeecgos@163.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("jeecgos@163.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地址:

		
			com.github.xiaoymin
			knife4j-openapi3-jakarta-spring-boot-starter
			4.3.0
		

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

        
            com.github.xiaoymin
            knife4j-gateway-spring-boot-starter
            4.3.0
        
spring boot 3.x 生态增强平滑升级

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

		
		
			com.alibaba
			druid-spring-boot-3-starter
			1.2.20
		

		
		
			com.baomidou
			dynamic-datasource-spring-boot3-starter
			4.1.3
		

		
		
            de.codecentric
            spring-boot-admin-starter-server
            3.0.4
        

你可能感兴趣的:(spring,boot,hive,后端)