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

歡迎訪問 生活随笔!

生活随笔

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

javascript

Spring Boot 2.3 版本变化[翻译]

發布時間:2023/12/10 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot 2.3 版本变化[翻译] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好,我是烤鴨:

? 最近在把低版本的springboot項目升級,正好翻譯了下springboot 2.1-2.3 版本的更新日志。

? Github 原文:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.3-Release-Notes

? 2.1 版本變化:https://blog.csdn.net/Angry_Mills/article/details/113113486

? 2.2 版本變化:https://blog.csdn.net/Angry_Mills/article/details/113116126

推薦版本: 2.3.7.RELEASE

從Spring Boot 2.2升級

更改最低要求

Spring Boot現在需要:

  • Gradle 6.3+(如果使用Gradle進行構建)。還支持5.6.x,但已棄用。
  • Jetty 9.4.22+(如果您使用Jetty作為嵌入式容器)

驗證啟動器不再包含在Web啟動器中

從#19550開始,默認情況下,Web和WebFlux啟動器不再依賴于驗證啟動器。例如,如果您的應用程序使用驗證功能,則發現javax.validation.*導入沒有得到解決,則需要自己添加啟動器。

對于Maven構建,可以執行以下操作:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency>

對于Gradle,您將需要添加以下內容:

dependencies {...implementation 'org.springframework.boot:spring-boot-starter-validation' }

Spring Data Neumann

Spring Boot 2.3附帶了Spring Data的主要版本。如果您使用的是Cassandra,Couchbase,Elasticsearch,MongoDB或JDBC,則需要額外的注意。

Cassandra

此版本切換到Cassandra v4,該版本帶來了許多向后不兼容的更改。如果您依靠ClusterBuilderCustomizer來定制Cluster,則此概念在v4中不再存在,已被兩個更具體的定制器取代:

  • DriverConfigLoaderBuilderCustomizer自定義驅動程序的屬性。請將此屬性用于尚未暴露的任何財產。
  • CqlSessionBuilderCustomizer自定義CqlSession(原Session)。

Cassandra v4驅動程序不再具有從接觸點自動進行本地DC推斷的功能。因此,必須使用默認的負載平衡策略設置“本地數據中心”屬性,并且聯系點必須位于該數據中心。spring.data.cassandra.local-datacenter添加了新屬性來設置本地數據中心。

Couchbase

此版本切換到Couchbase SDK v3,該版本帶來了許多向后不兼容的更改。

  • 要連接到集群,您現在應該使用spring.couchbase.connection-string而不是前者spring.couchbase.bootstrap-hosts。
  • 基于角色的訪問控制現在已經得到了概括。
  • Spring Boot不再自動配置 Bucket但是您可以使用ClusterAPI輕松進行配置。
  • Endpoints IO 配置在 spring.couchbase.env.io。
  • 如果要擴展CouchbaseConfiguration自定義環境,請ClusterEnvironmentBuilderCustomizer以一種更慣用的方式使用。

如果您將Couchbase與Spring Data結合使用,則需要提供存儲Bucket名稱。

Elasticsearch

不推薦使用的本機Elasticsearch傳輸已被刪除,因為Elasticsearch和Spring Data本身在其下一發行版中均不支持它。在此發行版中也刪除了對Jest庫的支持。

Spring Boot現在默認使用Elasticsearch 7.5+。

MongoDB

此版本切換到MongoDB 4,并協調反應式(reactive)和命令式驅動程序。如果您使用的是入門程序,那么這對您應該是非常透明的。

通過這種協調,如果您使用,將不再提供非反應性基礎結構spring-boot-starter-data-mongodb-reactive。如果您需要在啟動時使用命令式基礎架構(例如MongoOperations),請考慮添加spring-boot-starter-data-mongodb。

Neo4j

Neo4j的視圖攔截器中的打開會話現在默認為禁用。如果需要再次啟用它,請使用standardspring.data.neo4j.open-in-view屬性。

Neo4j運行狀況指示器的詳細信息現在包含version和edition的服務器,如以下示例所示:

neo4j: {status: "UP",details: {edition: "community",version: "4.0.0"} }

JDBC

在其新功能中,Spring Data JDBC 2.0現在默認情況下引用標識符。這種行為可以通過調用被禁用setForceQuote(false)的RelationalMappingContext。

Micrometer

此版本升級到Micrometer 1.5,帶來許多棄用:

  • 服務級別協議已重命名為“服務級別目標”,并且邊界用double而不是表示long。
  • Wavefront指標現在通過導出WavefrontSender。讀取和連接超時屬性廢棄。

Jackson

此版本升級到Jackson 2.11,其中包括對java.util.Date和的默認格式的更改java.util.Calendar。有關詳細信息,請參見FasterXML / jackson-databind#2643。

Spring Cloud Connectors啟動器已刪除

在2.2中不推薦使用Spring Cloud Connectors入門程序,而推薦使用Java CFEnv。該啟動程序已被刪除,并且Spring Boot的托管依賴項中不再包含Spring Cloud Connectors依賴項。

嵌入式Servlet Web服務器線程配置

用于配置嵌入式Servlet Web服務器(Jetty,Tomcat和Undertow)使用的線程的配置屬性已移至專用threads組。屬性現在可以發現server.jetty.threads,server.tomcat.threads和server.undertow.threads。舊屬性保留為不推薦使用的形式,以簡化遷移。

更改默認錯誤頁面的內容

默認情況下,錯誤消息和任何綁定錯誤不再包含在默認錯誤頁面中。這降低了將信息泄露給客戶端的風險。 server.error.include-message并且server.error.include-binding-errors可以分別用于控制消息的包含和綁定錯誤。支持的值是always,on-param和never。

磁盤空間運行狀況指示器

自動配置的磁盤空間運行狀況指示器不再需要在應用程序啟動時被監視的路徑。一條不存在的路徑將被檢測為具有零可用空間,從而導致指示器的響應下降。

自動創建 developmentOnlyGradle配置

該developmentOnly配置主要用于聲明對Spring Boot的DevTools的依賴性時,現在由Spring Boot的Gradle插件自動創建。developmentOnly可以從Gradle構建腳本中刪除任何手動配置。

刪除Maven網站插件管理

Spring Boot的構建不再使用站點插件(maven-site-plugin),并且其插件管理已刪除。如果您依賴于Spring Boot的托管版本,則應該添加自己的插件管理。

刪除Maven Exec插件自定義配置

如果您從繼承spring-boot-starter-parent,它將不再配置Maven的exec插件(exec-maven-plugin)來使用來設置主類start-class。如果您依賴于此,則可以按以下方式恢復該行為:

<plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><configuration><mainClass>${start-class}</mainClass></configuration> </plugin>

默認情況下,ApplicationContextRunner禁用Bean覆蓋

為了與保持一致SpringApplication,ApplicationContextRunner現在默認情況下禁用Bean覆蓋。如果您需要使用bean覆蓋進行測試,withAllowBeanDefinitionOverriding則可以啟用它。

使用激活多個配置文件 @ActiveProfiles

現在,@ActiveProfiles注釋支持包含逗號的配置文件名稱。這意味著像這樣的注釋@ActiveProfiles("p1,p2")會將提供的值p1,p2視為單個配置文件名稱。要激活多個配置文件,請像中提供每個配置文件名稱作為單獨的值@ActiveProfiles({"p1","p2"})。

WebServerInitializedEvent和ContextRefreshedEvent

作為引入對平穩關閉的支持的一部分,Web服務器初始化現在在應用程序上下文刷新處理結束時執行,而不是在刷新處理完成后立即執行。因此,WebServerInitializedEvent現已在之前發布ContextRefreshedEvent。

從Spring Boot 2.2棄用

在此發行版中刪除了Spring Boot 2.2中不推薦使用的大多數類,方法和屬性。請確保升級之前不調用不推薦使用的方法。

配置屬性

許多屬性已被重命名或棄用。您可以使用該spring-boot-properties-migrator模塊來識別那些屬性。一旦添加為項目的依賴項,它不僅會分析應用程序的環境并在啟動時顯示診斷信息,還會在運行時為您臨時遷移屬性。

<plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><configuration><mainClass>${start-class}</mainClass></configuration> </plugin> NoteOnce you’re done with the migration, please make sure to remove this module from your project’s dependencies.

Java 14支持

Spring Boot 2.3增加了對Java 14的支持。還支持Java 8和11。

使用Cloud Native Buildpack構建OCI鏡像

支持使用Cloud Native Buildpacks構建Docker鏡像,并已通過spring-boot:build-image goal和bootBuildImage task添加到Maven和Gradle插件中。默認情況下使用 Paketo Java buildpack創建鏡像。

構建分層的jar以包含在Docker鏡像中

Maven和Gradle插件已添加了對將jar文件的內容分層的支持。分層根據jar包的內容更改頻率將其分隔。這種分離允許構建更有效的Docker鏡像。可以重用未更改的現有圖層,并將已更改的圖層放置在頂部。

根據您的應用程序,您可能需要調整圖層的創建方式和添加新圖層的方式。這可以通過使用配置來完成,該配置描述了如何將jar分為幾層,以及這些層的順序。

創建分層jar時,spring-boot-jarmode-layertools默認情況下會將jar作為依賴項添加到jar中(可以通過構建配置禁用該jar)。將此jar放在類路徑上,您可以在特殊模式下啟動應用程序,該模式允許引導代碼運行與應用程序完全不同的內容,例如,提取層的內容。要查看可用的選項,請使用-Djarmode=layertools以下示例啟動一個 jar:

$ java -Djarmode=layertools -jar my-app.jar Usage:java -Djarmode=layertools -jar my-app.jarAvailable commands:list List layers from the jar that can be extracted #列出jar中可以提取的層extract Extracts layers from the jar for image creation #從jar中提取層以創建圖像help Help about any command

jar解壓縮時的可預測的類路徑順序

使用Maven和Gradle構建的jar現在包含索引文件。當jar解壓時,此索引文件用于確保類路徑的順序與直接執行jar時的順序相同。

支持配置文件的通配符位置

加載配置文件時,Spring Boot現在支持通配符位置。默認情況下,config/*/jar外部的通配符位置受支持。當有多個配置屬性源時,這在Kubernetes等環境中很有用。例如,如果您有單獨的mysql和redis配置,則將它們放在/config,即/config/mysql/application.properties和中可以自動選擇它們/config/redis/application.properties。

正常關機

所有四個嵌入式Web服務器(Jetty,Reactor Netty,Tomcat和Undertow)以及響應式和基于Servlet的Web應用程序均支持正常關機。使用啟用后server.shutdown=graceful,關閉后,Web服務器將不再允許新請求,并且將等待寬限期以完成活動請求。寬限期可以使用進行配置spring.lifecycle.timeout-per-shutdown-phase。請參閱參考文檔以獲取更多詳細信息。

Liveness and Readiness探針

Spring Boot現在具有有關應用程序可用性的內置知識,可以跟蹤應用程序是否處于活動狀態以及是否已準備好處理流量。可以將運行狀況端點配置為通過配置屬性公開應用程序的活動性(/actuator/health/liveness)和就緒狀態(/actuator/health/readiness)management.health.probes.enabled=true。在Kubernetes上運行時,這是自動完成的。

要了解有關此功能的更多信息,請查看此博客文章及其鏈接的參考文檔。

Spring Data Neumann

Spring Boot 2.3附帶了一個主要的Spring Data版本。請參閱Spring Data Neumann 了解更多信息。

R2DBC支持

當r2dbc在類路徑上時,ConnectionFactory將以與jdbc類似的方式自動配置a DataSource。如果Spring Data在類路徑上,則存儲庫也將像往常一樣自動配置。

R2DBC支持還添加了連接工廠的運行狀況指示器,ConnectionPool metrics和測試部分 @DataR2dbcTest。

WebFlux應用程序的可配置基本路徑

現在可以配置WebFlux應用程序的所有Web處理程序的基本路徑。使用該spring.webflux.base-path屬性來執行此操作。

Web應用程序中的日期時間轉換

現在可以通過應用程序屬性配置Web應用程序中的時間和日期時間值的轉換。這補充了對格式化日期值的現有支持。對于MVC,屬性分別為spring.mvc.format.time和spring.mvc.format.date-time。對于WebFlux,屬性分別是spring.webflux.format.time和spring.webflux.format.date-time。

除了采用典型的格式設置模式外,用于配置日期,時間和日期時間格式的屬性現在還支持值iso。設置后,將應用相應的ISO-8601格式。

iso下列屬性支持這些值:

  • spring.mvc.format.date
  • spring.mvc.format.date-time
  • spring.mvc.format.time
  • spring.webflux.format.date
  • spring.webflux.format.date-time
  • spring.webflux.format.time

Actuator 改進

配置屬性的端到端可追溯性

從#17886開始,/actuator/configprops端點提供有關配置屬性的端到端信息,以使其行為與環境端點保持一致。例如,在添加在application.properties添加server.server-header=Spring Boot,端點將顯示以下內容:

"serverHeader": {"origin": "class path resource [application.properties]:2:22","value": "Spring Boot" },

metrics endpoint 中的名稱按字母順序排列

/actuator/metrics/現在可以按字母順序對處可用的度量標準名稱進行排序,這使查找所需內容變得更加容易。

Query-less datasource 健康指示器

在沒有驗證查詢的情況下,數據源HealthIndicator現在以無查詢模式運行,java.sql.Connection#isValid用于驗證連接。

為Web MVC和WebFlux指標提供其他標簽

除了默認為MVC和WebFlux提供的標記外,現在還可以提供這些標記。可以使用WebMvcTagsContributor @BeanMVC和WebFluxTagsContributor @BeanWebFlux進行貢獻。

自動配置Wavefront的發送器

Wavefront的自動配置已更新,可以定義一個WavefrontSenderbean。這允許通過單個連接將指標和跟蹤發布到Wavefront。

Kafka原生指標

Kafka指標是為自動配置ConsumerFactory和創建的消費者和生產者本地發布的ProducerFactory。要為由自定義工廠創建的組件生成度量標準,應添加一個偵聽器,如以下示例所示:

factory.addListener(new MicrometerConsumerListener<>(meterRegistry)); 注意如果僅出于收集Kafka指標的目的而啟用JMX支持,則不再需要此功能。

RSocket對Spring集成的支持

Spring Boot現在為Spring Integration的RSocket支持提供自動配置。

如果spring-integration-rsocket可用,開發人員可以使用"spring.rsocket.server.*"屬性配置RSocket服務器,并使其使用IntegrationRSocketEndpoint或RSocketOutboundGateway組件來處理傳入的RSocket消息。

綁定到 Period

如果屬性需要表達一段時間,則可以使用java.time.Period屬性來表達。與持續時間支持類似,它支持一種簡單的格式(即10周10周)以及元數據支持。

Web服務切片測試

@WebServiceClientTest添加了新的批注以支持Web服務的“切片”測試。

依賴升級

Spring Boot 2.3移至幾個Spring項目的新版本:

  • Spring Data Neumann
  • Spring HATEOAS 1.1
  • Spring Integration 5.3
  • Spring Kafka 2.5
  • Spring Security 5.3
  • Spring Session Dragonfruit

請注意,Spring Boot 2.3與Spring Boot 2.2建立在相同的Spring Framework和Reactor生成之上。

許多第三方依賴項也已更新,其中一些更值得注意的是:

  • Artemis 2.12
  • AssertJ 3.16
  • Cassandra Driver 4.6
  • Couchbase Client 3.0
  • Elasticsearch 7.6
  • Flyway 6.4
  • Hibernate Validator 6.1
  • Infinispan 10.1
  • Jackson 2.11
  • JUnit Jupiter 5.6
  • Kafka 2.5
  • Kotlin 1.3.72
  • Lettuce 5.3
  • Micrometer 1.5
  • Mockito 3.3
  • MongoDB 4.0
  • QueryDSL 4.3

其他改進

除了上面列出的更改之外,還進行了許多小的調整和改進,包括:

  • 我們在JPA支持中更新了默認配置,以改善測試體驗,請參閱#16230和#16747。
  • spring-boot-autoconfigure-processor現在,來自的輸出是可重復的,從而使其與Gradle的構建緩存更好地配合工作。
  • Couchbase的類型密鑰可以通過進行配置spring.data.couchbase.type-key。
  • OAuth2參數綁定現在可用于@WebMvcTest。
  • 可以使用配置Jetty的后備隊列server.jetty.max-queue-capacity。
  • 可以使用來配置Liquibase的標簽支持spring.liquibase.tag。現在可以通過該spring.liquibase.clear-checksums屬性清除當前變更日志中的所有校驗和。
  • Gradle元數據現已發布。
  • DataSourceBuilder可以用來配置SimpleDriverDataSource。
  • DataSource 指標現在有描述。
  • 云平臺的自動檢測可以使用 spring.main.cloud-platform 來覆蓋。
  • 當請求具有認證時,現在支持緩存來自啟動器的HTTP端點的響應。
  • 現在,Maven支持創建jar 中的project.build.outputTimestamp屬性,從而使其輸出可重現。
  • Maven插件的Javadoc現在已發布。
  • 提供了一個定制器接口rsocketmessagehandlercustimizer,用于定制自動配置的RSocketMessageHandler。
  • 提供了一個定制程序界面,DefaultCookieSerializerCustomizer用于定制自動配置的DefaultCookieSerializer。
  • 現在可以通過設置server.servlet.register-default-servlet為來禁用默認servlet的自動配置false。
  • @ConditionalOnWarDeployment添加了新條件。它可用于檢測何時將應用程序作為war部署到Servlet容器或應用程序服務器。
  • 屬性遷移器處理所有不贊成使用的屬性,不僅包括那些具有錯誤級別的屬性。
  • 銷毀war的ServletContext時,將注銷JDBC驅動程序。
  • 可以使用來配置Redis的哨兵密碼spring.redis.sentinel.password。

Spring Boot 2.3中的棄用

  • spring.http已經被轉移到,server.servlet.encoding., spring.mvc. and spring.codec.,見#18827
  • SpringApplication#refresh(ApplicationContext)已不推薦使用SpringApplication#refresh(ConfigurableApplicationContext)。
  • 在ON_TRACE_PARAM與所使用的server.error.include-stacktrace 屬性已被重命名為ON_PARAM。
  • 不推薦使用org.springframework.boot.autoconfigure.elasticsearch.rest.RestClientBuilderCustomizer 替代為org.springframework.boot.autoconfigure.elasticsearch.RestClientBuilderCustomizer

總結

以上是生活随笔為你收集整理的Spring Boot 2.3 版本变化[翻译]的全部內容,希望文章能夠幫你解決所遇到的問題。

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