欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

spring?boot2升級spring?boot3的整體步驟流程

 更新時間:2025年08月19日 09:37:21   作者:兮動人  
從Spring Boot2到Spring Boot3的升級是一次全面而深刻的變革,它不僅帶來了技術棧的更新和新特性的引入,還顯著提升了應用的性能和開發(fā)效率,這篇文章主要給大家介紹了關于spring?boot2升級spring?boot3的整體步驟,需要的朋友可以參考下

spring boot2升級boot3

  • 整體流程如下

1、借助于開源的自動化代碼重構工具OpenRewrite,快速地進行代碼重構等

2、相關坐標升級更改

3、配置文件屬性更改

4、打包、構建與運行驗證

1. 前期準備工作

  • 第一步:確保升級之前項目是可編譯運行的

  • 第二步:更改項目坐標中 version 版本,以免 install 后覆蓋了已有的包,如:

<revision>5.9.0-SNAPSHOT</revision>
更改后:
<revision>5.9.0.1-boot3-SNAPSHOT</revision>

2. 使用OpenRewrite升級SpringBoot項目

對原項目代碼進行重構,快捷升級可以使用OpenRewrite插件對項目進行改寫,能自動升級如下:

* javax 寫法自動轉為 jakarta
* 部分舊包pom坐標自動更新為新版pom坐標
* 部分配置舊版自動更新新版本
* 自動增加新版自動裝配文件
* 部分spring寫法變更會自動更換(部分復雜的會有一定的問題,需要對部分代碼進行手動重寫)

需注意的幾個問題:

  • 部分自動更新的寫法可能會有問題,上面說的復雜的寫法

  • 部分設置的版本控制不會改變,但是如果spring定義了更高的版本,可能會導致版本過老不兼容,建議將spring-boot-dependecies里面定義過的版本控制進行刪除

  • 自動生成后仍需手動編譯進行查缺補漏

相關流程

1、原項目可編譯運行的情況下
2、引入OpenRewrite插件依賴相關執(zhí)行后
3、升級jdk、Maven、boot相關版本

2.1 添加OpenRewrite相關依賴

重要

使用插件前要保證原項目沒有經過更改,以及改過相關依賴坐標等。保證原本可編譯過。

需要注意的點是該插件會對文件夾內所有文件都進行重構,不是根據(jù)具體的pom配置的module限制。所以會需要占用很大的內存,如果未設置jvm大小,一般在比較多模塊的情況下會OOM。此時需要用命令設置,在項目根目錄設置即可:

set MAVEN_OPTS=-Xmx2048m -XX:MaxHeapSize=1024m
  • 目前最新的插件只支持SpringBoot_3_3,沒有3.4.x的,但是相差不大,使用后注意如有springboot版本定義改為和框架同步 3.4.3
  • 在 pom.xml 中添加 OpenRewrite 插件和所需的 recipe
<plugin>
    <groupId>org.openrewrite.maven</groupId>
    <artifactId>rewrite-maven-plugin</artifactId>
    <version>6.2.2</version>
    <configuration>
        <!-- activeRecipes標簽用于指定要執(zhí)行的OpenRewrite recipes -->
        <activeRecipes>
            <!-- 用于將SpringBoot升級到3.0版本的recipe -->
         <recipe>org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_3</recipe>
        </activeRecipes>
    </configuration>
    <dependencies>
        <dependency>
            <!-- 專門針對 Spring 生態(tài)系統(tǒng)的重構規(guī)則集合 -->
            <!-- 1、Spring Boot 2.x → 3.0 遷移
 			    2、Jakarta EE 包名替換(javax → jakarta)
			    3、過時配置屬性更新 -->
            <groupId>org.openrewrite.recipe</groupId>
            <artifactId>rewrite-spring</artifactId>
            <version>6.2.1</version>
        </dependency>
    </dependencies>
</plugin>

2.2 運行OpenRewrit后檢查變更

1、引入坐標后使用如下命令進行預覽更改,不修改實際源代碼

mvn rewrite:dryRun

2、執(zhí)行變更,實際應用并修改源代碼

mvn rewrite:run
  • 這個命令會分析你的項目,并應用SpringBoot 3.x.x 升級 recipe,自動更新代碼以適應新版本的API變化

  • 運行后檢查:使用git查看文件變化,變化過大的需要格外注意些,如需要需進行手動更改

3、舉例

例1

  • 運行 mvn rewrite:dryRun

  • 運行 mvn rewrite:run

  1. 生成了新的 auto-configuration imports 文件
Generated new file:
xxx/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

Spring Boot 3.x 之后的變更之一,新的自動配置機制要求把 AutoConfiguration 類明確定義在 imports 文件中,取代了 spring.factories 文件中的配置方式

  1. 修改了配置類
Changes have been made to:xxx/src/main/java/com/xxx/config/XxxConfigLoaderAutoConfiguration.java

例2 :如運行 mvn rewrite:run,會把包名以 javax開頭的需要相應地變更為jakarta,對應的單元測試、坐標等也會相應的進行變更

2.3 升級相關依賴版本

  • boot2
<java.version>1.8</java.version>
<spring-framework.version>5.3.27</spring-framework.version>
<spring-boot.version>2.5.8</spring-boot.version>
<spring-cloud.version>2020.0.5</spring-cloud.version>
<spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
  • boot3
<java.version>17</java.version>
<spring-framework.version>6.2.3</spring-framework.version>
<spring-boot.version>3.4.3</spring-boot.version>
<spring-cloud.version>2024.0.0</spring-cloud.version>
<spring-cloud-alibaba.version>2023.0.1.0</spring-cloud-alibaba.version>
  • 更新 Maven 編譯器的配置
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
  • 需要使用 Maven 3.6.3 以上版本,對應的插件版本升級如下
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-plugin-plugin</artifactId>
    <version>3.8.1</version>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.1.2</version>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.6.2</version>
    <configuration>
        <compilerArgs>
            <!-- 保留方法參數(shù)名,供 Spring/SpringDoc 等框架反射使用,
			不加的話endpoin會出問題-->
            <arg>-parameters</arg>
        </compilerArgs>
        <encoding>${project.build.sourceEncoding}</encoding>
        <showWarnings>true</showWarnings>
        <release>${java.version}</release>
    </configuration>
</plugin>

2.4 測試

  • mvn compile 修改編譯問題

  • 運行對應的測試類,確保升級后的項目仍能正常運行??赡苄枰謩诱{整一些OpenRewrite無法自動處理的部分

3. 常用坐標更改

1、MySQL JDBC驅動

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
變更為:
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
</dependency>

2、坐標不變,指定對應的版本號,如:

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.12.0</version>
</dependency>

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-inline</artifactId>
    <version>4.8.0</version>
</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-jcl</artifactId>
    <scope>provided</scope>
    <version>1.7.25</version>
</dependency>

<dependency>
    <groupId>org.apache.httpcomponents.client5</groupId>
    <artifactId>httpclient5</artifactId>
    <version>5.4.1</version>
</dependency>

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.2</version>
</dependency>

3、測試相關

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.11.4</version>
</dependency>
<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>5.11.4</version>
</dependency>

4. 配置文件屬性更改

1、Redis 配置

spring.redis.host: localhost
spring.redis.port: 6379
變更為:
spring.data.redis.host: localhost
spring.data.redis.port: 6379

2、RabbitMQ 配置

spring.rabbitmq.addresses: localhost:5672
spring.rabbitmq.username: guest
spring.rabbitmq.password: guest
變更為:
spring.rabbitmq.host: localhost
spring.rabbitmq.port: 5672
spring.rabbitmq.username: guest
spring.rabbitmq.password: guest

5. 常見問題匯總

1、通過 OpenRewrite 插件自動更改代碼后,會出現(xiàn) @Configuration 和 @AutoConfiguration 同時存在的情況,需要手動刪除 @Configuration

2、通過插件自動更改后會出現(xiàn)pom某些包自動指定了某些版本,建議刪除使用框架控制的版本

3、部分引入了 org.apache.commons.lang.x 的包會自動變成 org.apache.commons.lang3.x,需要手動改回?;蛘咭雽淖鴺?/p>

4、部分注解會修改錯誤,如 javax.annotation.Nullable 會修改成 jakarta.annotation.Nullable,其實不存在 jakarta.annotation.Nullable,需要修改回去

5、部分app啟動時會報xxx未開放,需要在啟動增加如下參數(shù)

--add-opens java.base/java.lang.reflect=ALL-UNNAMED

總結

到此這篇關于spring boot2升級spring boot3的文章就介紹到這了,更多相關spring boot2升級boot3,spring boot 升級,springboot升級內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 淺談Springboot之于Spring的優(yōu)勢

    淺談Springboot之于Spring的優(yōu)勢

    這篇文章主要介紹了淺談Springboot之于Spring的優(yōu)勢,簡述了在Java EE開發(fā)中遇到的問題,言簡意賅,需要的朋友可以參考下。
    2017-09-09
  • 電腦上安裝多個JDK版本時該如何自由切換(詳細圖文)

    電腦上安裝多個JDK版本時該如何自由切換(詳細圖文)

    我們在學習的過程中經常用到不同的jdk版本,那么如何在一臺電腦上同時安裝多個jdk版本并進行切換呢,這篇文章主要給大家介紹了關于電腦上安裝多個JDK版本時該如何自由切換的相關資料,需要的朋友可以參考下
    2023-10-10
  • Spring cloud Eureka注冊中心搭建的方法

    Spring cloud Eureka注冊中心搭建的方法

    這篇文章主要介紹了Spring cloud Eureka注冊中心搭建的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Java 什么是注解及注解原理詳細介紹

    Java 什么是注解及注解原理詳細介紹

    這篇文章主要介紹了Java 注解的原理實例詳解的相關資料,需要的朋友可以參考下
    2016-12-12
  • Java多線程下載網(wǎng)圖的完整案例

    Java多線程下載網(wǎng)圖的完整案例

    這篇文章主要給大家介紹了關于Java多線程下載網(wǎng)圖的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Spring 中使用Quartz實現(xiàn)任務調度

    Spring 中使用Quartz實現(xiàn)任務調度

    這篇文章主要介紹了Spring 中使用Quartz實現(xiàn)任務調度,Spring中使用Quartz 有兩種方式,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • Java代理模式(Proxy)實現(xiàn)方法詳解

    Java代理模式(Proxy)實現(xiàn)方法詳解

    這篇文章主要介紹了Java代理模式(Proxy)實現(xiàn)的相關資料,代理模式是一種結構型設計模式,通過引入代理對象來控制對目標對象的訪問,代理模式的優(yōu)點包括職責清晰、擴展性好、保護目標對象和增強功能,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-04-04
  • 深入理解spring多數(shù)據(jù)源配置

    深入理解spring多數(shù)據(jù)源配置

    項目中我們經常會遇到多數(shù)據(jù)源的問題,尤其是數(shù)據(jù)同步或定時任務等項目更是如此。本篇文章主要介紹了spring多數(shù)據(jù)源配置,有興趣的可以了解一下。
    2017-01-01
  • Springboot整合FreeMarker的實現(xiàn)示例

    Springboot整合FreeMarker的實現(xiàn)示例

    本文主要介紹了Springboot整合FreeMarker的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java語言實現(xiàn)非遞歸實現(xiàn)樹的前中后序遍歷總結

    Java語言實現(xiàn)非遞歸實現(xiàn)樹的前中后序遍歷總結

    今天小編就為大家分享一篇關于Java語言實現(xiàn)非遞歸實現(xiàn)樹的前中后序遍歷總結,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評論