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

SpringBoot從2.7.x 升級(jí)到3.3注意事項(xiàng)

 更新時(shí)間:2024年09月20日 11:22:17   作者:pumpkin84514  
從SpringBoot 2.7.x升級(jí)到3.3涉及多個(gè)重要變更,特別是因?yàn)?nbsp;Spring Boot 3.x 系列基于 Jakarta EE 9,而不再使用 Java EE,本文就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下

將 Spring Boot 從 2.7.x 升級(jí)到 3.3 是一個(gè)重要的遷移過(guò)程,特別是因?yàn)?Spring Boot 3.x 系列基于 Jakarta EE 9,而不再使用 Java EE。此版本升級(jí)伴隨著許多重大變化,以下是你在升級(jí)過(guò)程中需要注意的關(guān)鍵事項(xiàng):

1. JDK 版本升級(jí)

  • 要求:Spring Boot 3.x 最低要求 JDK 17。如果你當(dāng)前項(xiàng)目還在使用 JDK 8 或 JDK 11,首先需要升級(jí)到 JDK 17 或更高版本。
  • 建議:在升級(jí) Spring Boot 之前,先確保項(xiàng)目能夠在 JDK 17 上正常運(yùn)行。

2. Jakarta EE 遷移

  • 變化:Spring Boot 3.x 轉(zhuǎn)換到 Jakarta EE 9,所有 Java EE 包名從 javax.* 更改為 jakarta.*。
    • 例如:javax.servlet 變成了 jakarta.servlet
  • 解決方法:檢查代碼中是否直接依賴了 javax.* 包,如果有的話,必須修改為 jakarta.*。許多第三方庫(kù)和框架(如 Hibernate、Tomcat、Jetty 等)也需要更新到兼容 Jakarta EE 版本。

3. Spring Framework 6 升級(jí)

  • Spring Boot 3.x 是基于 Spring Framework 6 構(gòu)建的,升級(jí)到 Spring Framework 6 會(huì)帶來(lái)以下改動(dòng):
    • 移除的 API:一些已經(jīng)廢棄的 API 將被徹底移除。
    • 不再支持的框架:對(duì)一些老舊技術(shù)和庫(kù)的支持被移除,如 JUnit 4、CGLIB、Rhino 等。
    • Reactive Changes:Spring WebFlux 的一些 API 已做調(diào)整。
  • 解決方法:根據(jù)官方遷移指南,調(diào)整代碼中使用到的 Spring API。

4. 依賴庫(kù)的兼容性

  • 第三方庫(kù)升級(jí):確保你項(xiàng)目中使用的所有第三方庫(kù)都兼容 Spring Boot 3.x 和 Jakarta EE 9。如果你使用的庫(kù)沒(méi)有更新到支持 jakarta.* 包,可能需要找到替代方案或等待庫(kù)更新。
  • 建議:升級(jí)前使用 mvn dependency:tree 或 ./gradlew dependencies 來(lái)檢查所有依賴項(xiàng),并確認(rèn)其兼容性。

5. Spring Security

  • Spring Security 6:Spring Boot 3.x 使用 Spring Security 6,帶來(lái)了諸多變化,尤其是在 OAuth2 和 JWT 的處理上有新的 API 改動(dòng)。
  • 變化示例
    • 許多配置類(lèi)和方法已經(jīng)廢棄或被重構(gòu),比如 WebSecurityConfigurerAdapter 已被棄用,推薦使用 SecurityFilterChain 來(lái)配置安全規(guī)則。
    • @EnableWebSecurity 需要與 SecurityConfigurerAdapter 一起配置,而不再是繼承 WebSecurityConfigurerAdapter。

6. Hibernate 和 JPA

  • Jakarta Persistence API:Spring Boot 3.x 使用的 Hibernate 版本已經(jīng)遷移到 Jakarta Persistence API (jakarta.persistence),這意味著你需要檢查項(xiàng)目中所有 JPA 實(shí)體類(lèi)的導(dǎo)入聲明,確保它們指向正確的 Jakarta 包。
  • 建議:使用自動(dòng)化工具如 jdeps 或 jdeprscan 來(lái)檢查代碼中的依賴并進(jìn)行遷移。

7. 日志框架

  • Log4j 2.x 或 Logback 更新:Spring Boot 3.x 默認(rèn)使用較新的日志庫(kù)版本,確保項(xiàng)目中的日志框架已經(jīng)升級(jí)到最新的穩(wěn)定版本以防止兼容性問(wèn)題。
  • 日志配置:檢查 log4j2.xml 或 logback-spring.xml 中的配置項(xiàng)是否需要更新,尤其是涉及 jakarta.* 包的。

8. Spring Cloud 和其他生態(tài)系統(tǒng)

  • Spring Cloud 兼容性:如果你使用了 Spring Cloud,確保 Spring Cloud 版本與 Spring Boot 3.x 兼容。通常 Spring Cloud 會(huì)發(fā)布兼容特定 Spring Boot 版本的版本。
    • 例如:Spring Cloud 2022.0.x 系列版本兼容 Spring Boot 3.x。

9. 廢棄和移除的 API

  • 廢棄 API 清單:在 Spring Boot 2.7.x 中,某些 API 可能已經(jīng)標(biāo)記為廢棄,Spring Boot 3.x 可能會(huì)徹底移除這些 API。因此在升級(jí)前,建議先解決所有廢棄 API 的警告。
  • 工具:使用 jdeps 或 jdeprscan 工具檢查是否使用了廢棄的 API。

10. 配置文件的變更

  • application.properties / application.yml:一些配置屬性可能在 Spring Boot 3.x 中發(fā)生了變更或重命名,需要檢查你的配置文件。
  • 解決方法:參考 Spring Boot 官方發(fā)布的配置屬性遷移指南,確保配置項(xiàng)正確遷移。

11. 測(cè)試框架

  • JUnit 5:Spring Boot 3.x 強(qiáng)制要求使用 JUnit 5。如果你項(xiàng)目中仍在使用 JUnit 4,需要遷移到 JUnit 5。JUnit 5 提供了更現(xiàn)代化的 API 和特性,如 @ExtendWith、@TestFactory@Nested 等。
  • Mock 和 Stub 庫(kù):升級(jí)時(shí)也要注意測(cè)試框架如 Mockito、WireMock 等的兼容性。

示例:升級(jí)過(guò)程的步驟

1. 升級(jí) Java 版本

  • 修改 pom.xml 中的 maven.compiler.source 和 maven.compiler.target 為 17,或者修改 build.gradle 中的 sourceCompatibility 和 targetCompatibility 為 17。
  • 確保在 JDK 17 環(huán)境下編譯和運(yùn)行項(xiàng)目。

2. 升級(jí) Spring Boot 版本

在 pom.xml 中將 Spring Boot 版本升級(jí)為 3.3.x:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.3.x</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

或者在 build.gradle 中:

implementation 'org.springframework.boot:spring-boot-starter:3.3.x'

3. 遷移依賴庫(kù)

  • 使用 mvn dependency:tree 或 ./gradlew dependencies 查看依賴樹(shù),確保所有依賴都兼容 jakarta.* 包名。
  • 手動(dòng)調(diào)整代碼中對(duì) javax.* 的引用,改為 jakarta.*。

4. 運(yùn)行和測(cè)試

  • 運(yùn)行項(xiàng)目,修復(fù)編譯和運(yùn)行時(shí)問(wèn)題。
  • 運(yùn)行單元測(cè)試和集成測(cè)試,確保所有測(cè)試通過(guò),且升級(jí)不會(huì)破壞功能。

額外工具

  • jdeps:用于檢測(cè)是否使用了已被移除的 JDK 內(nèi)部 API。
  • jdeprscan:掃描項(xiàng)目是否使用了已廢棄的 API,可以結(jié)合 --release 17 參數(shù)來(lái)檢查與 JDK 17 的兼容性。

總結(jié)

從 Spring Boot 2.7.x 升級(jí)到 3.3 是一個(gè)涉及較多變動(dòng)的過(guò)程,特別是遷移到 Jakarta EE 和 JDK 17。你需要確保:

  • 項(xiàng)目在 JDK 17 上正常運(yùn)行。
  • 所有 javax.* 包改為 jakarta.*。
  • 更新 Spring 依賴和第三方庫(kù)以支持 Jakarta EE 9。
  • 仔細(xì)檢查配置文件和日志,處理廢棄 API。

到此這篇關(guān)于SpringBoot從2.7.x 升級(jí)到3.3注意事項(xiàng)的文章就介紹到這了,更多相關(guān)SpringBoot從2.7.x 升級(jí)到3.3內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • java中public class與class的區(qū)別詳解

    java中public class與class的區(qū)別詳解

    以下是對(duì)java中public class與class的區(qū)別進(jìn)行了分析介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-07-07
  • 圖文詳解Java中class的初始化順序

    圖文詳解Java中class的初始化順序

    網(wǎng)上有很多關(guān)于Java中class的初始化順序文章,但是本文通過(guò)圖文更加詳細(xì)的介紹了Java中class的初始化順序,并對(duì)class的裝載順序進(jìn)行了講解,下面一起來(lái)看看。
    2016-08-08
  • Java設(shè)計(jì)模式之原型模式的示例詳解

    Java設(shè)計(jì)模式之原型模式的示例詳解

    原型模式(Prototype Pattern)指使用原型實(shí)例指定創(chuàng)建對(duì)象的種類(lèi),并且通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象。本文將通過(guò)案例詳細(xì)講解一下原型模式,感興趣的可以了解一下
    2022-02-02
  • 淺談Spring Boot中Redis緩存還能這么用

    淺談Spring Boot中Redis緩存還能這么用

    這篇文章主要介紹了淺談Spring Boot中Redis緩存還能這么用,這種方式是Spring Cache提供的統(tǒng)一接口,實(shí)現(xiàn)既可以是Redis,也可以是Ehcache或者其他支持這種規(guī)范的緩存框架,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Java中切面的使用方法舉例詳解

    Java中切面的使用方法舉例詳解

    這篇文章主要介紹了Java中切面編程(AOP)的基本概念、原理及實(shí)現(xiàn)方式,AOP通過(guò)將橫切關(guān)注點(diǎn)模塊化為切面,使代碼更易于維護(hù)和擴(kuò)展,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • 基于springboot+vue實(shí)現(xiàn)垃圾分類(lèi)管理系統(tǒng)

    基于springboot+vue實(shí)現(xiàn)垃圾分類(lèi)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了基于springboot+vue實(shí)現(xiàn)垃圾分類(lèi)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 淺談Java中是否直接可以使用enum進(jìn)行傳輸

    淺談Java中是否直接可以使用enum進(jìn)行傳輸

    這篇文章主要介紹了淺談Java中是否直接可以使用enum進(jìn)行傳輸,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • JavaGUI模仿QQ聊天功能完整版

    JavaGUI模仿QQ聊天功能完整版

    這篇文章主要為大家詳細(xì)介紹了JavaGUI模仿QQ聊天功能完整版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • java調(diào)用回調(diào)機(jī)制詳解

    java調(diào)用回調(diào)機(jī)制詳解

    這篇文章主要介紹了java調(diào)用回調(diào)機(jī)制詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 詳解JavaEE 使用 Redis 數(shù)據(jù)庫(kù)進(jìn)行內(nèi)容緩存和高訪問(wèn)負(fù)載

    詳解JavaEE 使用 Redis 數(shù)據(jù)庫(kù)進(jìn)行內(nèi)容緩存和高訪問(wèn)負(fù)載

    本篇文章主要介紹了JavaEE 使用 Redis 數(shù)據(jù)庫(kù)進(jìn)行內(nèi)容緩存和高訪問(wèn)負(fù)載,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08

最新評(píng)論