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

關于JDK8升級17及springboot?2.x升級3.x詳細指南

 更新時間:2025年01月18日 10:42:26   作者:墨鴉_Cormorant  
這篇文章主要介紹了關于JDK8升級17及springboot?2.x升級3.x的相關資料,還討論了JPA包路徑從javax改為jakarta,以及Spring?Boot版本升級和Redis配置調(diào)整等,需要的朋友可以參考下

JDK 8 升級 17

簡介

從 JDK 8 升級到 JDK 17 的過程中,有幾個主要的變化,特別是 Java Platform Module System (JPMS) 的引入,以及一些包路徑的調(diào)整。以下是與 JDK 17 相關的一些重要變化:

  • Java Platform Module System (JPMS)

    • 模塊化:JDK 9 引入了模塊系統(tǒng),將標準 Java 庫劃分為多個模塊。這影響了 JDK 17 中的包結(jié)構(gòu)和類的組織方式。
    • 模塊路徑:JDK 11 引入了 --module-path 和 --add-modules 選項,允許用戶指定模塊路徑和加載特定模塊。
  • Java EE APIs 移除

    • JAX-RSjavax.ws.rs.* 包現(xiàn)在不在標準 Java SE 平臺上。
    • JAX-WSjavax.xml.ws.* 包現(xiàn)在不在標準 Java SE 平臺上。
    • JAX-Bjavax.xml.bind.* 包現(xiàn)在不在標準 Java SE 平臺上。
  • 其他變化

    • JavaFX:JavaFX 已經(jīng)從標準 Java SE 平臺中移除,現(xiàn)在作為一個獨立的模塊存在。

      如果應用使用了 JavaFX,確保已經(jīng)添加了 JavaFX 模塊到應用中

    • JSR 355:JSR 355 定義了一些與 JavaFX 相關的包,這些包也不再包含在標準 Java SE 平臺上。

  • JDK 17 中的新特性

    • JEP 391: Foreign Function & Memory API (Incubator):提供了與外部代碼和內(nèi)存交互的能力。
    • JEP 403: Sealed Classes:允許類聲明為密封,以限制繼承。
    • JEP 404: Pattern Matching for switch (Preview):引入了模式匹配支持到 switch 語句中。
    • JEP 414: Vector API (Fourth Incubator):提供了一種利用向量硬件指令的途徑。

javax.* 包移到 jakarta.*

  • Jakarta EE 技術棧:隨著 Java EE 轉(zhuǎn)變?yōu)?Jakarta EE,許多 javax.* 包已經(jīng)被遷移到 jakarta.*包下。這對于使用 Java Persistence API (JPA)、JSF、EJB 等技術的應用尤為重要。

    • javax.persistence.* -> jakarta.persistence.*
    • javax.faces.* -> jakarta.faces.*
    • javax.ejb.* -> jakarta.ejb.*
    • javax.servlet.* -> jakarta.servlet.*
    • javax.servlet.jsp.* -> jakarta.servlet.jsp.*
    • javax.websocket.* -> jakarta.websocket.*
    • javax.naming.* -> jakarta.naming.*
    • javax.sql.* -> jakarta.sql.*
    • javax.transaction.* -> jakarta.transaction.*

    JDK 8 升級到 JDK 17 需確保代碼中引用了正確的包名。應該使用 jakarta.* 而不是 javax.*。

maven pom 中更新 java 版本

  • 建議在父項目添加全局變量 java.version,然后在 maven-compiler-plugin 引用

    <properties>
        <java.version>17</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.10.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

springboot 2.x 升級 3.x

spring-boot 與 cloud、alibaba-cloud 的版本對應

redis 默認配置調(diào)整

在 Springboot 2.x 的版本中,redis 的默認配置是 spring.redis.*,升級成 Springboot 3.x 以后,redis 的默認配置調(diào)整為了spring.data.redis.*。

若繼續(xù)使用 Springboot2.x 的 redis 配置,會導致獲取不到 redis 的配置。

SpringBoot 3.x 整合 Querydsl

主要問題:springboot 升級 3.0,jpa 包路徑從 javax 改成 jakarta,在默認情況下,無法生存 Q 類,也沒辦法使用JPAQuery

解決方法

  • 引入依賴。重點:classifier 標簽

    <dependency>
        <groupId>com.querydsl</groupId>
        <artifactId>querydsl-jpa</artifactId>
        <classifier>jakarta</classifier>
        <version>5.0.0</version>
    </dependency>
    
    <dependency>
        <groupId>com.querydsl</groupId>
        <artifactId>querydsl-apt</artifactId>
        <version>5.0.0</version>
        <scope>provided</scope>
        <optional>true</optional>
        <classifier>jakarta</classifier>
    </dependency>
    
  • 引入 maven plugin

     <plugin>
        <groupId>com.mysema.maven</groupId>
        <artifactId>apt-maven-plugin</artifactId>
        <version>1.1.3</version>
        <executions>
            <execution>
    		<!--<goals>-->
    		<!--	<goal>process</goal>-->
    		<!--</goals>-->
                <configuration>
                    <outputDirectory>target/generated-sources</outputDirectory>
                    <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                </configuration>
            </execution>
        </executions>
    </plugin>
    
    

    注意:每個項目配置可能會有差別,在編譯時可能會報錯:Attempt to recreate a file for type xxx,導致此錯誤的情況也不太一致??赡艿脑蛑皇且驗榕渲昧?nbsp;goals,所以此處注釋掉 goals,其他情況不一定能適用此方式。

其他注意事項

  • 依賴循環(huán)引用 報錯

    如果升級前的 Spring Boot 版本早于 2.6.0,且存在 spring ioc 對象的循環(huán)引用,則需要添加允許循環(huán)引用的配置,否則報錯

    spring:
      main:
        allow-circular-references: true
    
  • WebMvcConfigurerAdapter.class 找不到報錯

    Spring Boot 3 基于 Spring Framework 6,而在 Spring Framework 5.3 中,WebMvcConfigurerAdapter 類已經(jīng)被棄用,并在后續(xù)版本中移除。

    解決方案

    使用 WebMvcConfigurer 接口

    WebMvcConfigurerAdapter 是一個抽象適配器類,用于實現(xiàn) WebMvcConfigurer 接口。

    在 Spring Framework 6 中,可以直接實現(xiàn) WebMvcConfigurer 接口來定制 Web MVC 的行為。

    創(chuàng)建自定義配置類

    創(chuàng)建一個新的類,實現(xiàn) WebMvcConfigurer 接口,并重寫需要的方法。

    @Configuration
    public class WebConfig implements WebMvcConfigurer {
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            // 自定義資源處理
        }
        @Override
        public void configurePathMatch(PathMatchConfigurer configurer) {
            // 自定義路徑匹配
        }
        // 其他需要的方法
    }
    
  • Spring Boot 3.x 支持優(yōu)雅退出,添加以下配置開啟

    # 打開優(yōu)雅退出
    server:
      shutdown: graceful
    # 多長時間后強制殺掉進程
    spring:
      lifecycle:
        timeout-per-shutdown-phase: 30s
    

maven 及 maven 插件的版本升級

maven 版本升級

為了確保 Maven 版本與 Java 17 兼容,應該使用一個較新的 Maven 版本。Java 17 是一個長期支持 (LTS) 版本,它是在 2021 年 9 月發(fā)布的。因此,應該使用 Maven 3.6.0 或更高版本來確保良好的兼容性。

以下是幾個推薦的 Maven 版本及其發(fā)布日期:

  • Maven 3.6.0 - 發(fā)布于 2019 年 2 月 10 日
  • Maven 3.6.3 - 發(fā)布于 2020 年 3 月 10 日
  • Maven 3.8.1 - 發(fā)布于 2021 年 2 月 18 日
  • Maven 3.8.5 - 發(fā)布于 2022 年 5 月 23 日

Maven 3.8.5 是一個較為推薦的版本,因為它包含了對 Java 17 的良好支持以及一些重要的安全修復和改進。

升級 Maven 版本

  • 查看當前 Maven 版本:

    打開終端或命令提示符,運行以下命令來查看已安裝的 Maven 版本:

    mvn --version
    

    如果還沒有安裝 Maven,或者安裝的版本較舊,可以按照下面的步驟安裝或升級。

  • 安裝或升級 Maven:

    • Windows 用戶:

      訪問 Apache Maven 官方下載頁面 下載最新的 Maven 版本。

      解壓下載的文件到一個目錄,例如 C:\apache-maven-3.8.5

      將 Maven 的 bin 目錄添加到系統(tǒng)環(huán)境變量 PATH 中。

      設置 M2_HOME 環(huán)境變量,值為 Maven 的安裝目錄。

    • Linux/macOS 用戶:

      使用包管理器安裝 Maven,例如對于 Ubuntu/Debian 使用 apt-get,對于 macOS 使用 brew

      sudo apt update && sudo apt install maven
      

      或者使用 Homebrew:

      brew install maven
      

      或者從 Apache Maven 官網(wǎng)下載二進制分發(fā)包,解壓縮到 /usr/local 或其他位置,并通過 mvn --version 確認安裝成功。

  • 設置 Java 17 作為默認 JDK:

    • Windows 用戶:

      確保安裝了 Java 17,并將其路徑添加到環(huán)境變量 JAVA_HOME 中。

      設置 JAVA_HOME 環(huán)境變量指向 Java 17 的安裝目錄。

    • Linux/macOS 用戶:

      安裝 Java 17,例如使用 sdkman 或者直接從 Oracle 或 Adoptium 下載。

      設置 JAVA_HOME 環(huán)境變量指向 Java 17 的安裝目錄。

      確保 JAVA_HOME 和 PATH 環(huán)境變量被正確設置。

  • 驗證 Maven 和 Java 版本:

    再次運行 mvn --version 命令,確保顯示的 Java 版本為 17,并且 Maven 版本為 3.8.5 或更高。

  • 配置 Maven 以使用 Java 17:

    在 pom.xml 文件中指定 Java 17 編譯和源代碼版本,詳見 maven-compiler-plugin 版本升級

maven-compiler-plugin 版本升級

  • 為了確保 Maven 編譯插件 (maven-compiler-plugin) 與 Java 17 兼容并支持 Spring Boot 3 的需求,需要選擇一個合適的 maven-compiler-plugin 版本。

    截至2023年,maven-compiler-plugin 的最新穩(wěn)定版本是 3.10.1。該版本與 Java 17 兼容,并且適用于 Spring Boot 3。

  • 下面是 maven-compiler-plugin 的一個示例配置,用于確保使用 Java 17 進行編譯:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.10.1</version>
                <configuration>
                    <source>17</source>
                    <target>17</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    這里的關鍵配置點包括:

    • <source> 和 <target> 都設置為 17,以指示使用 Java 17 進行編譯。
    • <version> 設置為 3.10.1,這是與 Java 17 兼容的一個版本。

    **請注意,需要根據(jù)實際的 Maven 和 Spring Boot 版本進行適當?shù)恼{(diào)整。**如果需要使用特定版本的 maven-compiler-plugin,請查閱官方文檔或發(fā)布頁面以確認版本的兼容性。`

總結(jié) 

到此這篇關于關于JDK8升級17及springboot 2.x升級3.x的文章就介紹到這了,更多相關JDK8升級17及springboot2.x升級3.x內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • mybatis使用Integer類型查詢可能出現(xiàn)的問題

    mybatis使用Integer類型查詢可能出現(xiàn)的問題

    這篇文章主要介紹了mybatis使用Integer類型查詢可能出現(xiàn)的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Maven基礎之如何修改本地倉庫的默認路徑

    Maven基礎之如何修改本地倉庫的默認路徑

    這篇文章主要介紹了Maven基礎之如何修改本地倉庫的默認路徑問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • @Configuration注解失效問題及解決方案

    @Configuration注解失效問題及解決方案

    SpringBoot配置類失效問題排查與解決,詳細描述@Configuration注解失效原因及解決方法,強調(diào)配置類掃描包路徑設置的重要性
    2026-06-06
  • java二維數(shù)組實現(xiàn)推箱子小游戲

    java二維數(shù)組實現(xiàn)推箱子小游戲

    這篇文章主要為大家詳細介紹了java二維數(shù)組實現(xiàn)推箱子小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Java多線程之scheduledThreadPool的方法解析

    Java多線程之scheduledThreadPool的方法解析

    這篇文章主要介紹了Java多線程之scheduledThreadPool的方法解析,queue是DelayedWorkQueue,但通過后面的分析可以知道,最大線程數(shù)是不起作用的,最多會起核心線程數(shù)的數(shù)量,需要的朋友可以參考下
    2023-12-12
  • 利用java實現(xiàn)二維碼和背景圖的合并

    利用java實現(xiàn)二維碼和背景圖的合并

    本文介紹如何使用java代碼將自動生成的二維碼放入背景模板中,對于java學習者或許有幫助,一起來看看。
    2016-07-07
  • java 學習筆記(入門篇)_java程序helloWorld

    java 學習筆記(入門篇)_java程序helloWorld

    安裝配置完Java的jdk,下面就開始寫第一個java程序--hello World.用來在控制臺輸出“Hello World”,接下來詳細介紹,感興趣的朋友可以參考下
    2013-01-01
  • Java常見異常及處理方式總結(jié)

    Java常見異常及處理方式總結(jié)

    今天給大家?guī)淼氖荍ava的相關知識,文章圍繞著Java異常展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Mybatis-plus sql語句LT、LE、EQ、NE、GE、GT的用法

    Mybatis-plus sql語句LT、LE、EQ、NE、GE、GT的用法

    本文介紹了如何使用MyBatis-Plus中的QueryWrapper類來構(gòu)建復雜的查詢條件,包括allEq、eq、ne、gt、ge、lt、le、between、notBetween等方法,通過鏈式調(diào)用這些方法,可以方便地組合多個條件,生成相應的SQL查詢語句
    2025-12-12
  • Spring Cloud Data Flow初體驗以Local模式運行

    Spring Cloud Data Flow初體驗以Local模式運行

    這篇文章主要介紹了Spring Cloud Data Flow初體驗以Local模式運行,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08

最新評論

汤原县| 万宁市| 盐城市| 洛浦县| 隆德县| 衢州市| 新津县| 甘洛县| 凤翔县| 华阴市| 鸡泽县| 阿瓦提县| 临沂市| 县级市| 唐山市| 同德县| 扎赉特旗| 鹤岗市| 兰坪| 格尔木市| 湘西| 八宿县| 资阳市| 西充县| 枝江市| 亳州市| 固原市| 连州市| 多伦县| 资源县| 邵武市| 比如县| 奈曼旗| 永兴县| 合阳县| 当涂县| 纳雍县| 库尔勒市| 青州市| 忻州市| 定陶县|