国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring Boot 2.x 到 3.2 的全面升級指南

這篇具有很好參考價值的文章主要介紹了Spring Boot 2.x 到 3.2 的全面升級指南。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

Spring Framework 是一種流行的開源企業(yè)級框架,用于創(chuàng)建在 Java Virtual Machine (JVM) 上運(yùn)行的獨(dú)立、生產(chǎn)級應(yīng)用程序。而Spring Boot 是一個工具,可以讓使用 Spring 框架更快、更輕松地開發(fā) Web 應(yīng)用程序和微服務(wù)。隨著 Spring Boot 的不斷發(fā)展,開發(fā)人員必須跟上最新的升級和變化。

最近,Spring Boot 宣布發(fā)布 3.2.x 版本,該版本帶來了多項(xiàng)新功能、錯誤修復(fù)和增強(qiáng)功能,鑒于對 Spring Boot 2.7.x 版本的支持已于 2023 年 11 月 18 日結(jié)束,這是一個非常重要且強(qiáng)制性的關(guān)注用于將 Spring Boot 應(yīng)用程序升級到最新的 3.x 版本。

因此,在本文中,我們將討論如何從 Spring Boot 2.x 遷移到 3.x,以及升級的優(yōu)勢以及開發(fā)人員在此過程中可能遇到的潛在困難。

升級指南

1. 升級 JDK 17

Spring Boot 3.0 需要 Java 17 作為最低版本。

如果您當(dāng)前使用的是 Java 8 或 Java 11,則需要在 Spring Boot 遷移之前升級 JDK。

2. 升級到 Spring Boot 3

查看項(xiàng)目及其依賴項(xiàng)的狀態(tài)后,請升級到 Spring Boot 3.0 的最新維護(hù)版本。

我們將使用 Spring Boot 3.2.0 進(jìn)行升級。

打開項(xiàng)目的 pom.xml 并更新 Spring Boot 的版本,如下所示。

<parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>3.2.0</version>
</parent>

3. 配置屬性遷移

在 Spring Boot 3.0 中,一些配置屬性被重命名/刪除,開發(fā)人員需要相應(yīng)地更新其 application.properties/application.yml。

為了幫助您實(shí)現(xiàn)這一點(diǎn),Spring Boot 提供了一個 spring-boot-properties-migrator 模塊。

我們可以通過將以下內(nèi)容添加到 Maven pom.xml 來添加遷移器:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-properties-migrator</artifactId>
  <scope>runtime</scope>
</dependency>

4. 升級到 Jakarta EE

由于 Java EE 已更改為 Jakarta EE,Spring Boot 3.x 的所有依賴項(xiàng) API 也從 Java EE 升級為 Jakarta EE。

簡單來說,您需要將所有 javax 的 imports 都替換為 jakarta。具體如下:

javax.persistence.*   -> jakarta.persistence.*
javax.validation.*    -> jakarta.validation.*
javax.servlet.*       -> jakarta.servlet.*
javax.annotation.*    -> jakarta.annotation.*
javax.transaction.*   -> jakarta.transaction.*

5. 調(diào)整@ConstructorBinding注解

@ConstructorBinding@ConfigurationProperties 類的類型級別不再需要,應(yīng)將其刪除。

當(dāng)一個類或記錄有多個構(gòu)造函數(shù)時,它仍然可以在構(gòu)造函數(shù)上使用,以指示應(yīng)使用哪一個構(gòu)造函數(shù)進(jìn)行屬性綁定。

6. Spring MVC 和 WebFlux的URL匹配更改

從 Spring Framework 6.0 開始,尾部斜杠匹配配置選項(xiàng)已為 deprecated,其默認(rèn)值設(shè)置為 false。

這意味著以前,以下控制器將匹配GET /healthGET /health/

@RestController
public class HealthController {

  @GetMapping("/health")
  public String health() {
    return "Application is Working";
  }

}

@RestController
public class HealthController {

  @GetMapping("/health")
  public Mono<String> health() {
    return Mono.just("Application is Working");
  }

}

7. RestTemplate 中的 Apache HttpClient

Spring Framework 6.0 中已刪除對 Apache HttpClient 的支持,現(xiàn)在由 org.apache.httpcomponents.client5:httpclient5 取代(注意:此依賴項(xiàng)具有不同的 groupId)。

如果您注意到 HTTP 客戶端行為存在問題,則 RestTemplate 可能會回退到 JDK 客戶端。

org.apache.httpcomponents:httpclient 可以由其他依賴項(xiàng)傳遞傳遞,因此您的應(yīng)用程序可能依賴此依賴項(xiàng)而不聲明它。

下面是遷移后的RestTemplate示例:

@Configuration
public class RestTemplateConfig {

    @Bean
    public RestTemplate restTemplate(){

        final SSLConnectionSocketFactory sslConnectionSocketFactory = SSLConnectionSocketFactoryBuilder.create()
                .build();
        final PoolingHttpClientConnectionManager manager = PoolingHttpClientConnectionManagerBuilder.create()
                .setSSLSocketFactory(sslConnectionSocketFactory)
                .build();
        
        final CloseableHttpClient closeableHttpClient = HttpClients.custom().setConnectionManager(manager)
                .build();
        
        final HttpComponentsClientHttpRequestFactory componentsClientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory();
        componentsClientHttpRequestFactory.setHttpClient(closeableHttpClient);
        
        final RestTemplate restTemplate = new RestTemplate(componentsClientHttpRequestFactory);
        return  restTemplate;
        
    }
}

8. 升級 Spring Security

Spring Boot 3.0 已升級到 Spring Security 6.0。

因此,WebSecurityConfigurerAdapter 已被棄用。 Spring鼓勵用戶轉(zhuǎn)向基于組件的安全配置。

為了演示新的配置風(fēng)格,我們使用 Spring Security lambda DSL 和方法 HttpSecurity#authorizeHttpRequests 來定義我們的授權(quán)規(guī)則。

下面是使用 WebSecurityConfigurerAdapter 的示例配置,它通過 HTTP Basic 保護(hù)所有端點(diǎn):

@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests((authz) -> authz
                .anyRequest().authenticated()
            )
            .httpBasic(withDefaults());
    }

}

展望未來,推薦的方法是注冊一個 SecurityFilterChain bean:

@Configuration
public class SecurityConfiguration {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests((authz) -> authz
                .anyRequest().authenticated()
            )
            .httpBasic(withDefaults());
        return http.build();
    }

}

9. Spring Kafka 模板升級

KafkaTemplate 方法現(xiàn)在返回 CompleteableFuture 而不是 ListenableFuture,后者已被棄用。

Spring Boot 2.x 中帶有 ListenableFuture 的 Kafka 模板:

private RoutingKafkaTemplate routingKafkaTemplate;

public void send(){
    ListenableFuture<SendResult<Object,Object>> future = routingKafkaTemplate.send("Message","topic");

    future.addCallback(new ListenableFutureCallback<>() {
        @Override
        public void onFailure(Throwable ex) {
            log.error(ex);
        }

        @Override
        public void onSuccess(SendResult<Object, Object> result) {
            log.info("success");
        }
    });
}

Spring Boot 3.x 中帶有 CompletableFuture 的 Kafka 模板:

private RoutingKafkaTemplate routingKafkaTemplate;

public void send() {
    CompletableFuture<SendResult<Object, Object>> future = routingKafkaTemplate.send("Message", "topic");
    future.thenAccept(log::info)
            .exceptionally(exception -> {
                log.error(exception);
                return null;
            });
}

10. Spring Doc OpenAPI 升級

springdoc-openapi用于為Spring Boot 項(xiàng)目自動生成 API 文檔。

springdoc-openapi的工作原理是在運(yùn)行時檢查應(yīng)用程序,以根據(jù) spring 配置、類結(jié)構(gòu)和各種注釋推斷 API 語義。

對于 spring-boot 3 支持,請確保使用 springdoc-openapi v2。

WebMVC 項(xiàng)目的 Spring Doc OpenAPI 升級

對于 WebMVC 項(xiàng)目,您需要在 pom.xml. 文件中包含以下依賴項(xiàng)。

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.3.0</version>
</dependency>

WebFlux 項(xiàng)目的 Spring Doc OpenAPI 升級

對于 WebFlux 項(xiàng)目,您需要在 pom.xml. 文件中包含以下依賴項(xiàng)。

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webflux-ui</artifactId>
    <version>2.3.0</version>
</dependency>

今日分享就到這里,感謝閱讀!如果您學(xué)習(xí)過程中如遇困難?可以加入我們超高質(zhì)量的Spring技術(shù)交流群,參與交流與討論,更好的學(xué)習(xí)與進(jìn)步!更多Spring Boot教程可以點(diǎn)擊直達(dá)!,歡迎收藏與轉(zhuǎn)發(fā)支持!

歡迎關(guān)注我的公眾號:程序猿DD。第一時間了解前沿行業(yè)消息、分享深度技術(shù)干貨、獲取優(yōu)質(zhì)學(xué)習(xí)資源文章來源地址http://www.zghlxwxcb.cn/news/detail-761427.html

到了這里,關(guān)于Spring Boot 2.x 到 3.2 的全面升級指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Jenkins升級指南 LTS2.361.1

    近期要在Jenkins中新增jacoco,對老舊Jenkins進(jìn)行升級,碰到的一些問題匯總。 主目錄,可在Configure System中查看,一般在: /var/lib/jenkins war包目錄,可在linux啟動程序充查看,一般在: /usr/lib/jenkins 系統(tǒng)服務(wù)腳本,我司在centos中安裝運(yùn)行,在 /etc/rc.d/init.d/jenkins jenkins日志,一般配

    2024年02月16日
    瀏覽(26)
  • Docker部署的gitlab升級指南(15.11.X容器里升級PostgreSQL到13.8)

    Docker部署的gitlab升級指南(15.11.X容器里升級PostgreSQL到13.8)

    一、確定當(dāng)前版本 二、備份數(shù)據(jù),防止升級發(fā)生意外 三、確定升級路線 docker環(huán)境部署gitlab的升級很簡單,直接基于高版本的鏡像運(yùn)行容器即可; 需要注意的是gitlab的升級不能跨大版本升級,詳見升級路徑: https://docs.gitlab.com/ee/update/index.html#upgrade-paths 可在此鏈接查看gitla

    2024年01月16日
    瀏覽(51)
  • Spring Boot 升級 3.2 報錯 Invalid value type for attribute ‘factoryBeanObjectType‘: java.lang.String

    Spring Boot 升級 3.2 報錯 Invalid value type for attribute ‘factoryBeanObjectType‘: java.lang.String

    ?? 作者主頁: 有來技術(shù) ?? 開源項(xiàng)目: youlai-mall ?? vue3-element-admin ?? youlai-boot ?? 倉庫主頁: Gitee ?? Github ?? GitCode ?? 歡迎點(diǎn)贊 ?? 收藏 ?留言 ?? 如有錯誤敬請糾正! youlai-boot 升級 Spring Boot 3.2 版本項(xiàng)目啟動報錯: 報錯截圖如下: mybatis-spring 官方 ISSUE: https://githu

    2024年02月03日
    瀏覽(28)
  • JDK 8 升級 JDK 17 全流程教學(xué)指南

    JDK 8 升級 JDK 17 全流程教學(xué)指南

    JDK 8 升級 JDK 17 首先已有項(xiàng)目升級是會經(jīng)歷一個較長的調(diào)試和自測過程來保證允許和兼容沒有問題。先說幾個重要的點(diǎn) 遇到問題別放棄 仔細(xì)閱讀報錯,精確到每個單詞每一行,不是自己項(xiàng)目的代碼也要點(diǎn)進(jìn)去看看源碼到底是為啥報錯 明確你項(xiàng)目引入的包,升級到 JDK17 后對應(yīng)

    2024年02月13日
    瀏覽(23)
  • Vue2與Vue3的區(qū)別與升級指南

    個人筆記不喜勿噴,如有錯誤感謝評論指正。 一、下面是Vue 2和Vue 3之間的一些主要區(qū)別: 1. 性能優(yōu)化: Vue 3對虛擬DOM進(jìn)行了重寫,提高了渲染性能。它引入了靜態(tài)樹提升和新的編譯器,減少了包的大小。 2. 響應(yīng)式系統(tǒng)的重寫: Vue 3中的響應(yīng)式系統(tǒng)使用了Proxy代理,而不再使

    2024年02月15日
    瀏覽(27)
  • uni-app 項(xiàng)目支持 vue 3.0 介紹及升級指南

    HBuilderX 3.3.0+ ?更新uni-app編譯器,支持基于 Vite 編譯到小程序平臺。 至此, uni-app 在 App/H5/小程序 全平臺支持 Vue 3.0 開發(fā),且全平臺支持 Vite 編譯器,下載 HBuilderX 3.3.0+ 體驗(yàn)。 Tips: H5/PC Web 平臺:hello-uniapp H5 端已遷移 vue3,點(diǎn)擊體驗(yàn) 除支持? vue3 ?語法特性外, uni-app ?特有

    2024年02月10日
    瀏覽(30)
  • Spring Boot:從入門到實(shí)踐的全面指南

    Spring Boot:從入門到實(shí)踐的全面指南

    1.1 簡介:什么是Spring Boot Spring Boot 是一個基于 Spring 框架的開源項(xiàng)目,它的主要設(shè)計目標(biāo)是使開發(fā)者能夠快速啟動和部署 Spring 應(yīng)用程序。Spring Boot 對 Spring 平臺和第三方庫采用了\\\"習(xí)慣優(yōu)于配置\\\"的理念,減少了開發(fā)人員對配置的需求。 1.2 特性:Spring Boot的優(yōu)勢與特點(diǎn) Spring

    2024年02月08日
    瀏覽(33)
  • Ubuntu 20.04 升級Ubuntu 22.04 及更換國內(nèi)源指南

    Ubuntu 20.04 升級Ubuntu 22.04 及更換國內(nèi)源指南

    打開虛擬機(jī),發(fā)現(xiàn)我的ubuntu版本還停留在20.04上,主要平時都用的實(shí)體機(jī),樹莓派以及Centos系統(tǒng)居多,虛擬機(jī)也不是經(jīng)常使用,今天閑來無事就把它升級到22.04吧,升級到Ubuntu 22.04.1 LTS版本后它可以提供免費(fèi)安全和維護(hù)更新至 2027年4月。 我們點(diǎn)開左下角的應(yīng)用中心,啟動紫色

    2024年01月24日
    瀏覽(41)
  • 升級篇:超詳細(xì)ChatGPT(GPT 4.0)論文潤色指南+最全提示詞/咒語

    升級篇:超詳細(xì)ChatGPT(GPT 4.0)論文潤色指南+最全提示詞/咒語

    在這篇文章中,我將分享如何利用ChatGPT 4.0輔助論文寫作的技巧,并根據(jù)網(wǎng)上的資料和最新的研究補(bǔ)充更多好用的咒語技巧。 本篇文章持續(xù)更新,祝大家寫作順利,如果對你有幫助,歡迎轉(zhuǎn)發(fā)、推薦、分享! 溫馨提示: 如果嚴(yán)肅對待這件事,請用GPT-4,別用GPT-3.5! 咒語心法

    2023年04月09日
    瀏覽(28)
  • SpringBoot2.7升級項(xiàng)目到Springboot3.1踩坑指南(jdk17/jdk21)

    由于SpringBoot3.x全面擁抱JDK17,兼容jdk21,jdk17乃是大勢所趨。這里是從SpringBoot2.7--SpringBoot3.1踩坑指南。 提前閱讀:jdk8升級JDK17避坑指南(適用于SpringBoot2.3—SpringBoot2.7升級) 國內(nèi)頂級開源項(xiàng)目升級到springBoot3情況,可以作為升級SpringBoot3的風(fēng)向標(biāo)。僅對比國內(nèi)規(guī)模使用,落地過

    2024年03月09日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包