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

關(guān)于JDK8升級(jí)17及springboot?2.x升級(jí)3.x詳細(xì)指南

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

JDK 8 升級(jí) 17

簡(jiǎn)介

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

  • Java Platform Module System (JPMS)

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

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

    • JavaFX:JavaFX 已經(jīng)從標(biāo)準(zhǔn) Java SE 平臺(tái)中移除,現(xiàn)在作為一個(gè)獨(dú)立的模塊存在。

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

    • JSR 355:JSR 355 定義了一些與 JavaFX 相關(guān)的包,這些包也不再包含在標(biāo)準(zhǔn) Java SE 平臺(tái)上。

  • JDK 17 中的新特性

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

javax.* 包移到 jakarta.*

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

    • 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 升級(jí)到 JDK 17 需確保代碼中引用了正確的包名。應(yīng)該使用 jakarta.* 而不是 javax.*。

maven pom 中更新 java 版本

  • 建議在父項(xiàng)目添加全局變量 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 升級(jí) 3.x

spring-boot 與 cloud、alibaba-cloud 的版本對(duì)應(yīng)

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

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

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

SpringBoot 3.x 整合 Querydsl

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

解決方法

  • 引入依賴。重點(diǎn):classifier 標(biāo)簽

    <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>
    
    

    注意:每個(gè)項(xiàng)目配置可能會(huì)有差別,在編譯時(shí)可能會(huì)報(bào)錯(cuò):Attempt to recreate a file for type xxx,導(dǎo)致此錯(cuò)誤的情況也不太一致??赡艿脑蛑皇且?yàn)榕渲昧?nbsp;goals,所以此處注釋掉 goals,其他情況不一定能適用此方式。

其他注意事項(xiàng)

  • 依賴循環(huán)引用 報(bào)錯(cuò)

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

    spring:
      main:
        allow-circular-references: true
    
  • WebMvcConfigurerAdapter.class 找不到報(bào)錯(cuò)

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

    解決方案

    使用 WebMvcConfigurer 接口

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

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

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

    創(chuàng)建一個(gè)新的類,實(shí)現(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
    # 多長(zhǎng)時(shí)間后強(qiáng)制殺掉進(jìn)程
    spring:
      lifecycle:
        timeout-per-shutdown-phase: 30s
    

maven 及 maven 插件的版本升級(jí)

maven 版本升級(jí)

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

以下是幾個(gè)推薦的 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 是一個(gè)較為推薦的版本,因?yàn)樗藢?duì) Java 17 的良好支持以及一些重要的安全修復(fù)和改進(jìn)。

升級(jí) Maven 版本

  • 查看當(dāng)前 Maven 版本:

    打開終端或命令提示符,運(yùn)行以下命令來(lái)查看已安裝的 Maven 版本:

    mvn --version
    

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

  • 安裝或升級(jí) Maven:

    • Windows 用戶:

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

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

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

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

    • Linux/macOS 用戶:

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

      sudo apt update && sudo apt install maven
      

      或者使用 Homebrew:

      brew install maven
      

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

  • 設(shè)置 Java 17 作為默認(rèn) JDK:

    • Windows 用戶:

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

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

    • Linux/macOS 用戶:

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

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

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

  • 驗(yàn)證 Maven 和 Java 版本:

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

  • 配置 Maven 以使用 Java 17:

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

maven-compiler-plugin 版本升級(jí)

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

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

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

    <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>
    

    這里的關(guān)鍵配置點(diǎn)包括:

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

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

總結(jié) 

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

相關(guān)文章

  • Java流程控制之順序結(jié)構(gòu)

    Java流程控制之順序結(jié)構(gòu)

    Java中的流程控制語(yǔ)句可以這樣分類:順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)。下面文章我們就來(lái)看看來(lái)順序結(jié)構(gòu)的詳細(xì)介紹,主要以順序結(jié)構(gòu)簡(jiǎn)單圖示及詳細(xì)解說(shuō)該內(nèi)容,需要的小伙伴可以參考一下
    2021-12-12
  • 如何通過(guò)eclipse web項(xiàng)目導(dǎo)入itellij idea并啟動(dòng)

    如何通過(guò)eclipse web項(xiàng)目導(dǎo)入itellij idea并啟動(dòng)

    這篇文章主要介紹了如何通過(guò)eclipse web項(xiàng)目導(dǎo)入itellij idea并啟動(dòng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java枚舉類接口實(shí)例原理解析

    Java枚舉類接口實(shí)例原理解析

    這篇文章主要介紹了Java枚舉類接口實(shí)例原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • JVM完全解讀之Metaspace解密源碼分析

    JVM完全解讀之Metaspace解密源碼分析

    通過(guò)這篇文章,你將可以了解到,為什么會(huì)有metaspace?metaspace的組成,metaspace的VM參數(shù),jstat里我們應(yīng)該關(guān)注metaspace的哪些值,有需要的朋友可以借鑒參考下
    2022-01-01
  • Spring?IoC容器Bean作用域的singleton與prototype使用配置

    Spring?IoC容器Bean作用域的singleton與prototype使用配置

    這篇文章主要為大家介紹了Spring?IoC容器Bean作用域的singleton與prototype使用配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Mybatis基于xml配置實(shí)現(xiàn)單表的增刪改查功能

    Mybatis基于xml配置實(shí)現(xiàn)單表的增刪改查功能

    這篇文章主要介紹了Mybatis基于xml配置實(shí)現(xiàn)單表的增刪改查,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Java中使用BeanMap將對(duì)象轉(zhuǎn)為Map詳解

    Java中使用BeanMap將對(duì)象轉(zhuǎn)為Map詳解

    這篇文章主要介紹了Java中使用BeanMap將對(duì)象轉(zhuǎn)為Map詳解,BeanMap?是?Apache?Commons?BeanUtils?庫(kù)中的一個(gè)類,BeanMap?可以將?Java?對(duì)象的屬性作為鍵,屬性值作為對(duì)應(yīng)的值,存儲(chǔ)在一個(gè)?Map?中,它提供了一種將?Java?對(duì)象轉(zhuǎn)換為?Map?的方式,需要的朋友可以參考下
    2024-01-01
  • Spring啟動(dòng)時(shí)實(shí)現(xiàn)初始化有哪些方式?

    Spring啟動(dòng)時(shí)實(shí)現(xiàn)初始化有哪些方式?

    今天給大家?guī)?lái)的文章是關(guān)于Spring的相關(guān)知識(shí),文章圍繞著Spring啟動(dòng)時(shí)實(shí)現(xiàn)初始化有哪些方式展開,文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • springboot @Valid注解對(duì)嵌套類型的校驗(yàn)功能

    springboot @Valid注解對(duì)嵌套類型的校驗(yàn)功能

    這篇文章主要介紹了springboot~@Valid注解對(duì)嵌套類型的校驗(yàn),主要介紹 @Valid在項(xiàng)目中的使用,需要的朋友可以參考下
    2018-05-05
  • Java 8函數(shù)式接口Function BiFunction DoubleFunction區(qū)別

    Java 8函數(shù)式接口Function BiFunction DoubleFunction

    這篇文章主要為大家介紹了Java 8函數(shù)式接口Function BiFunction DoubleFunction區(qū)別示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07

最新評(píng)論