最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring?boot2升級(jí)spring?boot3的整體步驟流程

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

spring boot2升級(jí)boot3

  • 整體流程如下

1、借助于開(kāi)源的自動(dòng)化代碼重構(gòu)工具OpenRewrite,快速地進(jìn)行代碼重構(gòu)等

2、相關(guān)坐標(biāo)升級(jí)更改

3、配置文件屬性更改

4、打包、構(gòu)建與運(yùn)行驗(yàn)證

1. 前期準(zhǔn)備工作

  • 第一步:確保升級(jí)之前項(xiàng)目是可編譯運(yùn)行的

  • 第二步:更改項(xiàng)目坐標(biāo)中 version 版本,以免 install 后覆蓋了已有的包,如:

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

2. 使用OpenRewrite升級(jí)SpringBoot項(xiàng)目

對(duì)原項(xiàng)目代碼進(jìn)行重構(gòu),快捷升級(jí)可以使用OpenRewrite插件對(duì)項(xiàng)目進(jìn)行改寫(xiě),能自動(dòng)升級(jí)如下:

* javax 寫(xiě)法自動(dòng)轉(zhuǎn)為 jakarta
* 部分舊包pom坐標(biāo)自動(dòng)更新為新版pom坐標(biāo)
* 部分配置舊版自動(dòng)更新新版本
* 自動(dòng)增加新版自動(dòng)裝配文件
* 部分spring寫(xiě)法變更會(huì)自動(dòng)更換(部分復(fù)雜的會(huì)有一定的問(wèn)題,需要對(duì)部分代碼進(jìn)行手動(dòng)重寫(xiě))

需注意的幾個(gè)問(wèn)題:

  • 部分自動(dòng)更新的寫(xiě)法可能會(huì)有問(wèn)題,上面說(shuō)的復(fù)雜的寫(xiě)法

  • 部分設(shè)置的版本控制不會(huì)改變,但是如果spring定義了更高的版本,可能會(huì)導(dǎo)致版本過(guò)老不兼容,建議將spring-boot-dependecies里面定義過(guò)的版本控制進(jìn)行刪除

  • 自動(dòng)生成后仍需手動(dòng)編譯進(jìn)行查缺補(bǔ)漏

相關(guān)流程

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

2.1 添加OpenRewrite相關(guān)依賴

重要

使用插件前要保證原項(xiàng)目沒(méi)有經(jīng)過(guò)更改,以及改過(guò)相關(guān)依賴坐標(biāo)等。保證原本可編譯過(guò)。

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

set MAVEN_OPTS=-Xmx2048m -XX:MaxHeapSize=1024m
  • 目前最新的插件只支持SpringBoot_3_3,沒(méi)有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標(biāo)簽用于指定要執(zhí)行的OpenRewrite recipes -->
        <activeRecipes>
            <!-- 用于將SpringBoot升級(jí)到3.0版本的recipe -->
         <recipe>org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_3</recipe>
        </activeRecipes>
    </configuration>
    <dependencies>
        <dependency>
            <!-- 專門(mén)針對(duì) Spring 生態(tài)系統(tǒng)的重構(gòu)規(guī)則集合 -->
            <!-- 1、Spring Boot 2.x → 3.0 遷移
 			    2、Jakarta EE 包名替換(javax → jakarta)
			    3、過(guò)時(shí)配置屬性更新 -->
            <groupId>org.openrewrite.recipe</groupId>
            <artifactId>rewrite-spring</artifactId>
            <version>6.2.1</version>
        </dependency>
    </dependencies>
</plugin>

2.2 運(yùn)行OpenRewrit后檢查變更

1、引入坐標(biāo)后使用如下命令進(jìn)行預(yù)覽更改,不修改實(shí)際源代碼

mvn rewrite:dryRun

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

mvn rewrite:run
  • 這個(gè)命令會(huì)分析你的項(xiàng)目,并應(yīng)用SpringBoot 3.x.x 升級(jí) recipe,自動(dòng)更新代碼以適應(yīng)新版本的API變化

  • 運(yùn)行后檢查:使用git查看文件變化,變化過(guò)大的需要格外注意些,如需要需進(jìn)行手動(dòng)更改

3、舉例

例1

  • 運(yùn)行 mvn rewrite:dryRun

  • 運(yùn)行 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 之后的變更之一,新的自動(dòng)配置機(jī)制要求把 AutoConfiguration 類明確定義在 imports 文件中,取代了 spring.factories 文件中的配置方式

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

例2 :如運(yùn)行 mvn rewrite:run,會(huì)把包名以 javax開(kāi)頭的需要相應(yīng)地變更為jakarta,對(duì)應(yīng)的單元測(cè)試、坐標(biāo)等也會(huì)相應(yīng)的進(jìn)行變更

2.3 升級(jí)相關(guān)依賴版本

  • 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 以上版本,對(duì)應(yīng)的插件版本升級(jí)如下
<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會(huì)出問(wèn)題-->
            <arg>-parameters</arg>
        </compilerArgs>
        <encoding>${project.build.sourceEncoding}</encoding>
        <showWarnings>true</showWarnings>
        <release>${java.version}</release>
    </configuration>
</plugin>

2.4 測(cè)試

  • mvn compile 修改編譯問(wèn)題

  • 運(yùn)行對(duì)應(yīng)的測(cè)試類,確保升級(jí)后的項(xiàng)目仍能正常運(yùn)行。可能需要手動(dòng)調(diào)整一些OpenRewrite無(wú)法自動(dòng)處理的部分

3. 常用坐標(biāo)更改

1、MySQL JDBC驅(qū)動(dòng)

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

2、坐標(biāo)不變,指定對(duì)應(yīng)的版本號(hào),如:

<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、測(cè)試相關(guān)

<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. 常見(jiàn)問(wèn)題匯總

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

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

3、部分引入了 org.apache.commons.lang.x 的包會(huì)自動(dòng)變成 org.apache.commons.lang3.x,需要手動(dòng)改回?;蛘咭雽?duì)應(yīng)的坐標(biāo)

4、部分注解會(huì)修改錯(cuò)誤,如 javax.annotation.Nullable 會(huì)修改成 jakarta.annotation.Nullable,其實(shí)不存在 jakarta.annotation.Nullable,需要修改回去

5、部分app啟動(dòng)時(shí)會(huì)報(bào)xxx未開(kāi)放,需要在啟動(dòng)增加如下參數(shù)

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

總結(jié)

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

相關(guān)文章

  • JVM類加載機(jī)制與雙親委派使用及說(shuō)明

    JVM類加載機(jī)制與雙親委派使用及說(shuō)明

    文章介紹了JVM的四大類加載器(啟動(dòng)類加載器、擴(kuò)展類加載器、應(yīng)用程序類加載器和自定義類加載器),雙親委派機(jī)制及其核心優(yōu)勢(shì),以及如何打破雙親委派機(jī)制的場(chǎng)景和實(shí)現(xiàn)方式
    2026-02-02
  • SpringBoot實(shí)現(xiàn)圖形驗(yàn)證碼的示例代碼

    SpringBoot實(shí)現(xiàn)圖形驗(yàn)證碼的示例代碼

    驗(yàn)證碼的實(shí)現(xiàn)方式有很多,可以由前端實(shí)現(xiàn),也可以由后端進(jìn)行實(shí)現(xiàn),也有很多的插件和工具包可以使用,在這里,我們使用 Hutool 提供的小工具實(shí)現(xiàn),本文介紹SpringBoot實(shí)現(xiàn)圖形驗(yàn)證碼的實(shí)例,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • Java后端頭像合成到背景圖上面代碼實(shí)踐

    Java后端頭像合成到背景圖上面代碼實(shí)踐

    這篇文章介紹了如何使用Java后端工具類將頭像合成到背景圖上,提供了兩種合成方法:一種是將頭像固定在背景圖的某個(gè)位置,另一種是將頭像合成到背景圖的中心位置,作者分享了圖片合成類的代碼,并總結(jié)了如何根據(jù)需要調(diào)用相關(guān)方法返回圖片地址
    2026-01-01
  • spring boot 1.5.4 集成shiro+cas,實(shí)現(xiàn)單點(diǎn)登錄和權(quán)限控制

    spring boot 1.5.4 集成shiro+cas,實(shí)現(xiàn)單點(diǎn)登錄和權(quán)限控制

    這篇文章主要介紹了spring boot 1.5.4 集成shiro+cas,實(shí)現(xiàn)單點(diǎn)登錄和權(quán)限控制,需要的朋友可以參考下
    2017-06-06
  • IntelliJ IDEA查看項(xiàng)目git路徑的三種方式

    IntelliJ IDEA查看項(xiàng)目git路徑的三種方式

    這篇文章主要介紹了IntelliJ IDEA查看項(xiàng)目git路徑的三種方式,文中通過(guò)圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-12-12
  • Spring Boot Debug調(diào)試過(guò)程圖解

    Spring Boot Debug調(diào)試過(guò)程圖解

    這篇文章主要介紹了Spring Boot Debug調(diào)試過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • JAVA使用JDBC技術(shù)操作SqlServer數(shù)據(jù)庫(kù)實(shí)例代碼

    JAVA使用JDBC技術(shù)操作SqlServer數(shù)據(jù)庫(kù)實(shí)例代碼

    本篇文章主要介紹了JAVA使用JDBC技術(shù)操作SqlServer數(shù)據(jù)庫(kù)實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01
  • Java11 發(fā)布前抓緊掌握這些新特性

    Java11 發(fā)布前抓緊掌握這些新特性

    Java 11即將發(fā)布,你準(zhǔn)備好了? 在這篇文章中,我們討論下在進(jìn)入Java 11之前,你需要了解的Java 8、9和10的一些有用功能,若還在用Java 8以前的版本,那就太落伍了,這里首先要明確,Java 8:是一個(gè)針對(duì)傳統(tǒng)傳統(tǒng)版本的重大轉(zhuǎn)變
    2018-09-09
  • 詳解Java String類常用方法有哪些

    詳解Java String類常用方法有哪些

    今天給大家?guī)?lái)的是關(guān)于Java String的相關(guān)知識(shí),文章圍繞著String類常用方法展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • java 根據(jù)身份證號(hào)碼判斷出生日期、性別、年齡的示例

    java 根據(jù)身份證號(hào)碼判斷出生日期、性別、年齡的示例

    這篇文章主要介紹了java 根據(jù)身份證號(hào)碼判斷出生日期、性別、年齡的示例,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-10-10

最新評(píng)論

石柱| 板桥市| 馆陶县| 高清| 宜丰县| 尼玛县| 闽清县| 武汉市| 松潘县| 石泉县| 阿勒泰市| 霞浦县| 苍山县| 綦江县| 越西县| 攀枝花市| 岐山县| 满城县| 两当县| 福鼎市| 辽中县| 榆林市| 筠连县| 合肥市| 嘉善县| 曲沃县| 新津县| 乌兰察布市| 安义县| 南投县| 榕江县| 平泉县| 田东县| 饶阳县| 宿州市| 锦屏县| 前郭尔| 勐海县| 沙湾县| 双牌县| 崇左市|