日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

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

發布時間:2023/12/29 javascript 47 coder
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot 2.x 到 3.2 的全面升级指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

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

升級指南

1. 升級 JDK 17

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

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

2. 升級到 Spring Boot 3

查看項目及其依賴項的狀態后,請升級到 Spring Boot 3.0 的最新維護版本。

我們將使用 Spring Boot 3.2.0 進行升級。

打開項目的 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 中,一些配置屬性被重命名/刪除,開發人員需要相應地更新其 application.properties/application.yml

為了幫助您實現這一點,Spring Boot 提供了一個 spring-boot-properties-migrator 模塊。

我們可以通過將以下內容添加到 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 的所有依賴項 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. 調整@ConstructorBinding注解

@ConstructorBinding@ConfigurationProperties 類的類型級別不再需要,應將其刪除。

當一個類或記錄有多個構造函數時,它仍然可以在構造函數上使用,以指示應使用哪一個構造函數進行屬性綁定。

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

從 Spring Framework 6.0 開始,尾部斜杠匹配配置選項已為 deprecated,其默認值設置為 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 的支持,現在由 org.apache.httpcomponents.client5:httpclient5 取代(注意:此依賴項具有不同的 groupId)。

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

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

下面是遷移后的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鼓勵用戶轉向基于組件的安全配置。

為了演示新的配置風格,我們使用 Spring Security lambda DSL 和方法 HttpSecurity#authorizeHttpRequests 來定義我們的授權規則。

下面是使用 WebSecurityConfigurerAdapter 的示例配置,它通過 HTTP Basic 保護所有端點:

@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 方法現在返回 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 項目自動生成 API 文檔。

springdoc-openapi的工作原理是在運行時檢查應用程序,以根據 spring 配置、類結構和各種注釋推斷 API 語義。

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

WebMVC 項目的 Spring Doc OpenAPI 升級

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

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

WebFlux 項目的 Spring Doc OpenAPI 升級

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

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

今日分享就到這里,感謝閱讀!如果您學習過程中如遇困難?可以加入我們超高質量的Spring技術交流群,參與交流與討論,更好的學習與進步!更多Spring Boot教程可以點擊直達!,歡迎收藏與轉發支持!

歡迎關注我的公眾號:程序猿DD。第一時間了解前沿行業消息、分享深度技術干貨、獲取優質學習資源

總結

以上是生活随笔為你收集整理的Spring Boot 2.x 到 3.2 的全面升级指南的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人av手机在线观看 | 福利视频精品 | 色片在线播放 | 国产剧情av在线 | 亚洲视频小说 | 永久免费不卡在线观看黄网站 | 免费看国产曰批40分钟 | 欧美啪啪一区二区 | 亚洲精品乱码久久久久久蜜桃动漫 | 精品国产a| 久久色在线视频 | 久久久免费在线观看 | 99热这里都是精品 | 毛片基地在线播放 | 国精品一区二区三区 | 国产精品乱码久久久久久 | 91成人在线播放 | 在线观看wwww | 亚洲一区二区三区加勒比 | 少妇被爽到高潮动态图 | julia一区二区三区在线观看 | 日本一区二区免费电影 | 免费成人结看片 | 国产精品蜜 | 福利二区三区 | 亚洲AV成人精品 | jizzjizzjizz国产 | 一级艳片新婚之夜 | 天天澡天天狠天天天做 | 中文字幕第五页 | 凹凸视频一区二区 | 老师张开让我了一夜av | 国产婷婷一区二区 | 另类欧美日韩 | 麻豆免费在线 | 久久精品69 | 精久久久久 | 日韩高清成人 | 三级av在线 | 久久成人在线视频 | 99一级片 | 你懂的视频网站 | 女生喷水视频 | 欧美精品国产一区二区 | 欧美黄色a级片 | 免费在线观看黄色 | 成人中文网 | 欧美日韩五月天 | a级一a一级在线观看 | 懂色av蜜臂av粉嫩av | 国产女主播福利 | 鲁丝一区二区 | 免费在线观看av | 欲乱美女 | av无毛| 中文字幕精品久久 | 欧美成人精品欧美一 | 亚洲大尺度网站 | 熟妇人妻精品一区二区三区视频 | 国产吃瓜在线 | 全部孕妇毛片 | 黄色片成年人 | 动漫美女无遮挡免费 | 在线免费观看视频你懂的 | 欧美一级久久久 | 日日射日日操 | 亚洲精品99久久久久中文字幕 | 成人做爰免费视频免费看 | 日韩免费观看 | 成人免费片 | 五月色婷 | 性高潮在线观看 | 超碰黑丝 | 国产一区二区视频免费 | 亚洲成人三级 | 中文字幕在线观看一区 | 高清国产视频 | 亚洲一区影视 | 国产盗摄一区二区三区在线 | 一本色道久久88 | 91日韩在线视频 | 亚洲欧美一区二区三区 | 一本免费视频 | 成人无码精品1区2区3区免费看 | 亚洲高清中文字幕 | 懂色av蜜臂av粉嫩av | 久久伊人99 | 天天拍天天射 | 亚洲大片免费观看 | 一本高清dvd在线播放 | 黄色1级毛片 | 国内自拍视频在线播放 | av在线播放一区二区三区 | www.一区二区三区 | 二区视频在线 | 国产成人亚洲综合a∨婷婷 台湾a级片 | av免费播放网站 | 东京热一本视频一区 | 日韩一区在线视频 |