相关推荐recommended
JAVA架构升级:Springboo2.5.14 升级至Springboo3.1.7 JDK11 升级JDK21
作者:mmseoamin日期:2024-02-20

架构升级:Springboo2.5.14 升级至Springboo3.1.7 JDK11 升级JDK21

    • 依赖升级
    • 问题记录
      • 问题1、gradle 7.5.1 升级至8.5
      • 问题2、intellij idea 由 2022.1 升级至 2023.3.2
      • 问题3、springboot 版本支持问题 升级至3.1.7
      • 问题4、lombok 升级至1.18.30
      • 问题5、javax. 包转为 jakarta. 包
      • 问题6、本项目使用log4j2要排除logback依赖
      • 问题7、如依赖cn.hutool 升级至5.8.23+
      • 问题8、springfox-swagger2 升级到 springdoc 2.3.0
      • 问题9、fastjson fastjson2升级到 2.0.45
      • 问题10、'dubbo''2.4.9'升级至 2.6.9
      • 问题11、 job center 由1.1.8 升级至1.1.15
      • 问题12、druid 1.2.16升级至 1.2.21
      • 问题13、redis 配置调整
      • 补充14、mysql 依赖包调整 com.mysql:mysql-connector-j

        依赖升级

        Gradle 7.5.1 ---> 8.5
        intellij idea 2022.1 ---> 2023.3.2
        Springboot 2.5.14 ---> 3.1.17
        Lombok 1.18.24 ---> 1.18.30
        hutool-all 5.1.1 ---> 5.8.23
        springfox-swagger2 ---> springdoc 2.3.0
        fastjson、fastjson2 ---> 2.0.45
        dubbo 2.4.9  --->  2.6.9
        druid 1.2.16  --->  1.2.21
        

        问题记录

        问题1、gradle 7.5.1 升级至8.5

        Unsupported Java. 
        Your build is currently configured to use Java 21.0.1 and Gradle 7.5.1.
        Possible solution:
         - Use Java 18 as Gradle JVM: Open Gradle settings 
         - Upgrade Gradle wrapper to 8.5 version and re-import the project
        

        问题2、intellij idea 由 2022.1 升级至 2023.3.2

        问题3、springboot 版本支持问题 升级至3.1.7

        id 'org.springframework.boot' version '3.1.7'
        id 'io.spring.dependency-management' version '1.1.4'
        

        问题4、lombok 升级至1.18.30

        Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field ‘com.sun.tools.javac.tree.JCTree qualid’

        处理:lombok版本兼容性的问题 :依赖更新新版 lombok 为 1.18.30 即可

        compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.30'
        annotationProcessor group: 'org.projectlombok', name: 'lombok', version: '1.18.30'
        

        问题5、javax. 包转为 jakarta. 包

        错误: 找不到符号import javax.annotation.Resource;
        错误: 程序包javax.servlet.http不存在import javax.servlet.http.HttpServletRequest;
        

        处理新包路径引入

        import jakarta.annotation.Resource;
        import jakarta.servlet.http.HttpServletRequest;
        

        JAVA架构升级:Springboo2.5.14 升级至Springboo3.1.7 JDK11 升级JDK21,在这里插入图片描述,第1张

        JAVA架构升级:Springboo2.5.14 升级至Springboo3.1.7 JDK11 升级JDK21,在这里插入图片描述,第2张

        问题6、本项目使用log4j2要排除logback依赖

        //去除logback
        implementation.exclude group: 'ch.qos.logback'
        

        问题7、如依赖cn.hutool 升级至5.8.23+

        cn.hutool:hutool-all 5.1.1 升级至5.8.23

        问题8、springfox-swagger2 升级到 springdoc 2.3.0

        文档:https://springdoc.org/index.html#javadoc-support

        //补充javax 依赖
        implementation 'javax.servlet:javax.servlet-api:4.0.1'
        

        应用主类添加注解@EnableOpenApi (swagger2是@EnableSwagger2)

        swagger配置类SwaggerProperties.class,与swagger2.xx 版本有差异,具体看下文

        自定义一个配置类 SwaggerConfiguration.class,看下文

        访问地址:http://localhost:8080/swagger-ui/index.html

        (swagger2.xx版本访问的地址为http://localhost:8080/swagger-ui.html)

        //替换为springdoc
        implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0'
        

        问题9、fastjson fastjson2升级到 2.0.45

        implementation "com.alibaba:fastjson:2.0.45"
        implementation "com.alibaba.fastjson2:fastjson2:2.0.45"
        

        问题10、‘dubbo’'2.4.9’升级至 2.6.9

        implementation(group: 'com.alibaba', name: 'dubbo', version:'2.6.9')
        

        问题11、 job center 由1.1.8 升级至1.1.15

        // job
        implementation(group: 'com.nxin.framework', name: 'job-center-client', version: '1.1.15')
        implementation(group: 'com.nxin.framework', name: 'job-center-core', version: '1.1.15')
        

        问题12、druid 1.2.16升级至 1.2.21

        implementation 'com.alibaba:druid-spring-boot-starter:1.2.21'
        implementation group: 'com.alibaba', name: 'druid', version:"$druidVersion"
        

        问题13、redis 配置调整

        #redis配置
        spring.data.redis.host = ${redis}
        spring.data.redis.port = 6379
        spring.data.redis.password = ******
        spring.data.redis.database = 12
        spring.data.redis.timeout = 60000
        spring.data.redis.lettuce.pool.max-wait = 30000
        spring.data.redis.lettuce.pool.max-idle = 10
        spring.data.redis.lettuce.pool.max-active = 10
        

        补充14、mysql 依赖包调整 com.mysql:mysql-connector-j

        //    runtimeOnly 'mysql:mysql-connector-java:8.0.33'
            runtimeOnly 'com.mysql:mysql-connector-j'