javascript
Spring Boot 2.1 版本变化[翻译]
大家好,我是烤鴨:
? 最近在把低版本的springboot項目升級,正好翻譯了下springboot 2.1-2.3 版本的更新日志。
? Github 原文:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.1-Release-Notes
? 2.2 版本變化:https://blog.csdn.net/Angry_Mills/article/details/113116126
? 2.3 版本變化:https://blog.csdn.net/Angry_Mills/article/details/113116195
推薦版本: 2.1.18.RELEASE
從Spring Boot 2.0升級
Spring Framework 5.1
Spring Boot 2.1使用Spring Framework 5.1。有關可能影響您的應用程序的任何更改,請參考其升級指南。
Bean覆寫
默認情況下,Bean覆蓋已被禁用,以防止意外覆蓋Bean。如果您要依賴覆蓋,則需要將設置spring.main.allow-bean-definition-overriding為true。
自動配置排除
現在,排除項將被一致地應用,而不僅僅是本地應用。這適用于上定義的任何排斥@EnableAutoConfiguration,@SpringBootApplication,@ImportAutoConfiguration或spring.autoconfigure.exclude財產。
執行器“信息”和“健康”端點安全
Ifspring-security在類路徑上沒有任何安全配置,/info并且/health現在公開以確保一致性。如果您spring-security在類路徑上,但是不提供任何安全性配置,則需要顯式保護它們。
Servlet路徑
該server.servlet.path物業已移至spring.mvc.servlet.path。如果您以編程方式依賴該屬性來知道DispatcherServlet請使用的路徑,請DispatcherServletPath改用。
@WebMvcTest和@WebFluxTest安全配置
用戶配置現在自動包含在Web Slice測試中。@WebMvcTest尋找WebSecurityConfigurerBean,而@WebFluxTest尋找ServerHttpSecurityBean。
記錄優化
debug當使用Web應用程序(Spring MVC或Spring WebFlux)時,Spring Framework 5.1重新訪問了日志輸出。如果您嘗試調試應用程序,并且想要恢復Spring Boot 2.0樣式的日志記錄,則應將以下內容添加到您的application.properties:
logging.level.web =debug您可能還需要設置spring.http.log-request-details=true登錄實際要求的細節。默認情況下,此屬性是false因為它有可能公開敏感信息。
Narayana JTA支持
Narayana支持已被刪除,以支持與Narayana版本更加一致的官方支持。如果您使用spring-boot-starter-jta-narayana,則新坐標如下:
<dependency><groupId> me.snowdrop </groupId><artifactId> narayana-spring-boot-starter </artifactId><version> 2.0.1 </version> </dependency>查看文檔以獲取更多詳細信息。
ActiveMQ池
如果您使用activemq-pool,則在此發行版中已刪除了支持,pooled-jms以便在支持JMS 2.0的同時提供相同的功能。您可以按以下方式更新構建:
<dependency><groupId> org.messaginghub </groupId><artifactId> pooled-jms </artifactId> </dependency>HttpPutFormContentFilter
HttpPutFormContentFilter已不推薦使用FormContentFilter。spring.mvc.formcontent.putfilter.enabled不再定義該屬性。如果您正在使用此功能,請更新為spring.mvc.formcontent.filter.enabled。
OAuth2客戶端配置
spring.security.oauth2.client.registration的結構已在單個樹中進行了修改,而不是具有authorizationcode和clientcredentials 替代的命名空間。
Micrometer ‘all’ SLA Handling
management.metrics.distribution.sla錯誤地描述了所有的meterID可以被用來設置一個SLA的所有指標。鑒于儀表可能因儀表類型而異,因此無法正確實現此功能。
InfluxDB HttpClient自定義
以前,聲明一個OkHttpClient.Builder足以自定義InfluxDB使用的客戶端。為了確保隔離這些定制,請定義一個InfluxDbOkHttpClientBuilderProvider。
Maven插件
該finalName屬性不再可自定義以與標準Maven插件的行為保持一致。
如果您要自定義repackage目標,那么現在repackage必須指定主要執行的ID ,請參閱更新的示例。
Srping.Version POM屬性
POM中spring.version定義的屬性spring-boot-dependencies已重命名。要覆蓋Spring Framework版本,您現在應該spring-framework.version改為使用屬性。除非絕對必要,否則我們通常建議您堅持使用托管框架版本。
刪除’spring.provides’文件
初學者可以聲明一個,META-INF/spring.provides以便IDE可以確定其提供的依賴項。掃描啟動程序POM以獲取它聲明的直接依賴關系就足夠了。如果您負責第三方啟動程序并聲明了此文件,則可以將其刪除。
Thymeleaf Spring Security Extras
Thymeleaf的Spring Security Extras模塊的依賴關系管理和自動配置已從thymeleaf-extras-springsecurity4更改為thymeleaf-extras-springsecurity5。如果您使用的是模塊,則應更新pom.xml或build.gradle依賴thymeleaf-extras-springsecurity5。
Json Simple
json-simple不再提供的依賴管理,并且JsonParser使用它的實現也已刪除。
Jersey 1
不再支持Jersey 1。請升級到Jersey 2。
Hibernate EhCache支持
如果您hibernate-ehcache使用EhCache 2作為Hibernate的二級緩存提供程序,則從Hibernate 5.3開始不推薦使用。
Endpoint ID names
如果您已經開發了自己的執行器@Endpointbean,則應確保它們遵循Spring Boot 2.1中引入的更嚴格的命名規則。具體來說,ID應該僅是字母數字,并且必須以字母開頭(EndpointId有關完整的詳細信息,請參閱類文檔)。
如果您使用-或.字符,則Spring Boot 2.1將記錄警告并要求您遷移到正確的格式。
Lombok
Spring Boot 2.1已從1.16.x升級到Lombok1.18.x。在1.18中,默認情況下,Lombok將不再生成私有的無參數構造函數。可以通過lombok.noArgsConstructor.extraPrivate=true在lombok.config配置文件中進行設置來啟用它。有關Lombok變更的更多信息,請參閱其變更日志。
Java Persistence API依賴性
作為升級到Hibernate 5.3的一部分,托管的Java Persistence API依賴項已從更改org.hibernate.javax.persistence:hibernate-jpa-2.1-api為javax.persistence:javax.persistence-api。如果您正在使用spring-boot-starter-data-jpa或依賴于通過Hibernate傳遞的API,那么您將不受此更改的影響。
JpaProperties
特定于Hibernate的屬性已從移入JpaProperties名為的單獨類HibernateProperties。如果您正在使用JpaProperties.getHibernateProperties(HibernateSettings),則現在應同時注入HibernateProperties和JpaProperties以確定屬性:
Map<String, Object> properties = hibernateProperties.determineHibernateProperties( jpaProperties.getProperties(), new HibernateSettings());所有嵌入式Web服務器上的最大HTTP標頭大小一致
現在,默認的最大HTTP標頭大小在四個受支持的嵌入式Web服務器(Jetty,Netty,Tomcat和Undertow)上是一致的,為8KB。大小可以使用server.max-http-header-size屬性進行自定義。
第三方庫升級
Spring Boot 2.1建立在Spring Framework 5.1之上,并需要它。
我們已盡可能升級到其他第三方jar的最新穩定版本。此版本中一些值得注意的依賴項升級包括:
- Tomcat 9
- Undertow 2
- Hibernate 5.3
- JUnit 5.2
- Micrometer 1.1
Java 11支持
Spring Boot 2.1仍與Java 8兼容,但現在也支持Java11。我們已配置了持續集成,以針對最新的Java 11版本構建和測試Spring Boot。
DataSize支持
如果屬性需要以字節或類似的方便單位表示大小,則可以公開org.springframework.util.unit.DataSize屬性。與DurationSpring Boot 2.0中引入的支持類似,數據大小支持一種簡單的格式(即10MB10 MB)和元數據支持。所有相關的配置屬性已更新為使用新類型。
上下文ApplicationConversionService支持
在ApplicationConversionService現在默認與注冊Environment和BeanFactory所創造SpringApplication。這使您可以將應用程序轉換器直接用于核心Spring Framework項目,例如@Value注釋:
@Value("${my.duration:10s}") private Duration duration;Profile Expression
配置文件匹配已得到改進,以支持表達式格式。例如production & (us-east | eu-central)表示匹配,如果production profile是激活的,那么us-east 或 eu-central 都是激活的。
概要文件表達式可以按如下方式使用:
- 使用啟用組件 @Profile
- 加載多配置文件YAML文檔
- 使用以下方式啟用Logback配置 <springProfile>
任務執行
Spring Boot現在為提供自動配置ThreadPoolTaskExecutor。如果使用@EnableAsync,TaskExecutor則可以刪除自定義項,而使用spring.task.execution命名空間中可用的自定義項。ThreadPoolTaskExecutor使用可以輕松創建自定義TaskExecutorBuilder。
任務調度
與新的任務執行支持類似,Spring Boot自動配置一個ThreadPoolTaskSchedulerwhen @EnableScheduling。可以使用spring.task.scheduling名稱空間來自定義任務計劃程序。TaskSchedulerBuilder默認情況下,A也可用。
Logging Groups
可以定義記錄器組,以允許一次性配置相關記錄器。例如,您可以聲明一個tomcat組,該組允許您配置org.apache.catalina,org.apache.coyote并org.apache.tomcat使用單個鍵記錄器:
#定義組 logging.group.tomcat = org.apache.catalina,org.apache.coyote,org.apache.tomcat#使用組(可能在其他配置文件中) logging.level.tomcat = TRACE方便web和sql團體提供外的開箱。有關詳細信息,請參見參考指南。
Maven插件
使用系統屬性和環境變量的專用選項對指定參數進行了改進。也可以重新包裝和更換classified神器,看到了更新的文檔中的classifier屬性。
JPA設置的引導模式
Spring Data Lovelace為存儲庫引入了一種“引導模式”。Spring Boot公開了一個屬性,可以設置該屬性來控制JPA存儲庫的boostrap模式。例如,要推遲JPA存儲庫的初始化,只需將以下內容添加到您的配置中:
spring.data.jpa.repositories.bootstrap-mode = deferred將模式設置為deferred或時lazy,JPA設置在單獨的線程中進行。
Kafka Streams支持
現在,在聲明依賴項時為Kafa Streams提供自動配置org.apache.kafka:kafka-streams。有關詳細信息,請參閱更新的Spring Boot文檔和Spring Kafka文檔。
Spring Data JDBC支持
Spring Data包括對JDBC的存儲庫支持,并將自動為上的方法生成SQL CrudRepository。當必要的依賴項位于類路徑上時,Spring Boot將自動配置Spring Data的JDBC存儲庫。可以將它們添加到您的項目中,而只需依賴于spring-boot-starter-data-jdbc。
有關Spring Data JDBC的完整詳細信息,請參考參考文檔。
JMS ConnectionFactory緩存
自動配置ConnectionFactory默認情況下使用進行緩存,CachingConnectionFactory直到啟用池選項或spring.jms.cache.enabled將其設置為為止false。合并選項也已擴展到Artemis(請參閱參考資料spring.jms.artemis.pool.*)。
Elasticsearch REST客戶端
作為Jest的替代選項,命名空間的RestClient和的自動配置RestHighLevelClient提供了可配置選項spring.elasticsearch.rest.*。
JUnit 5
所有@…Test注釋都帶有meta注釋,@ExtendWith(SpringExtension.class)因此,如果您使用的是JUnit 5,則可以刪除該設置的冗余部分。SpringBoot還使用maven-surefire-plugin不需要使用任何自定義設置即可使用JUnit 5的版本。
安全
OAuth2 WebFlux支持
添加了對WebFlux OAuth2登錄的支持。使用OpenID Connect提供程序可以更輕松地配置OpenID Connect提供程序issuer-uri,它將斷言為它的發行者標識符。
OAuth2資源服務器支持
如果您spring-security-oauth2-resource-server在類路徑中,則只要指定了JWK Set URI,Spring Boot就可以設置OAuth2資源服務器。例如:
spring.security.oauth2.resource.jwt.jwk.set-uri = https://example.com/oauth2/default/v1/keysMVC和WebFlux應用程序都支持此功能。
非Web OAuth應用程序
現在,InMemoryReactiveClientRegistrationRepository無論我們使用哪種應用程序類型,我們都提供了一個自動配置的Bean,因此可以更輕松地編寫非Web OAuth應用程序。如果您正在編寫不使用嵌入式Web服務器的應用程序(例如CLI應用程序),則現在可以直接注入并使用配置的注冊存儲庫。
執行器端點
緩存端點
一個新的/actuator/caches端點列出了可用的CacheManager實例及其各自的帶有基本元數據的緩存。有關更多詳細信息,請參見API。
Spring集成圖端點
如果您使用的是Spring Integration,則可以在處公開所有Spring Integration組件的圖形表示/actuator/integrationgraph。請參閱API以獲取更多詳細信息。
健康終點
一個HealthIndicatorRegistrybean是現在可以添加和刪除HealthIndicator在運行時。該health端點也得到了改進,如果需要查詢特定指標。例如/actuator/health/db僅執行“ db” HealthIndicator。請參閱API以獲取更多詳細信息。
提供HealthIndicator了Apache Cassandra的反應式。
Micrometer
通用千分尺標簽
通用標簽可以聲明性地應用于所有儀表,如以下示例所示:
management.metrics.tags.region=us-east-1 management.metrics.tags.stack=prod上面的示例在所有儀表上分別添加region和stack標記,其值分別為us-east-1和prod。
對新指標的自動配置支持
指標覆蓋范圍已得到改進,包括:
- Hibernate metrics
- Spring Framework’s WebClient
- Kafka consumer metrics
- Log4j2 metrics
- Jetty server thread pool metrics
- Server-side Jersey HTTP request metrics
對新注冊表的自動配置支持
在類路徑上時,以下度量標準注冊表現在已自動配置:
- AppOptics
- Humio
- KariosDB
此外,已添加了對Prometheus推送網關的支持。
其他直方圖配置屬性
可以使用newmanagement.metrics.distribution.maximum-expected-value.*和management.metrics.distribution.minimum-expected-value.*屬性來控制每米基準值的最大和最小期望值。
其他改動
除了上面列出的更改之外,還進行了許多小的調整和改進,包括:
- 可以使用來配置Jackson可見性spring.jackson.visiblity.*。
- WebServiceTemplate使用自動配置創建一個更容易WebServiceTemplateBuilder。
- 錯誤頁面顯示使用Devtools時的堆棧跟蹤。
- 不再需要導出虛擬對象ResourceConfig以啟用Jersey支持。
- JNDI查找已得到改進resourceRef,默認情況下啟用。
- 可RetryTemplate通過訪問來自Rabbit基礎架構的定制RabbitRetryTemplateCustomizer。
- RabbitTemplate現在可以配置默認的接收隊列
- Tomcat的最大吞咽大小現在可以使用屬性進行配置
- 現在支持帶有Reactor Netty Server的HTTP / 2。
- Kafka自動配置現在支持errorHandler transactionManager和afterRollbackProcessorbean。
- 添加了對全局生成唯一JMX ObjectName的支持(而不是將此功能限制為Actuator Endpoints)
- 現在對配置屬性元數據進行了排序,不贊成使用的項目最后出現。
- 現在的withDetails方法Health.Builder還接受Map。
- ReactiveJwtDecoder現在,當您定義了發行者URL時,將自動配置反應式。
- BackgroundPreinitializer如果spring.backgroundpreinitializer.ignore設置了系統屬性,可以禁用
- HiddenHttpMethodFilter 可以使用屬性禁用
- JAP入門POM現在可以在Java 9+上開箱即用
- 現在,在com.mongodb.client.MongoClient定義bean(以及更常見的com.mongodb.MongoClient)時,MongoDB自動配置將退出。
- 您現在可以選擇將Jetty RS用作WebClient的HTTP驅動程序
- spring.quartz命名空間中添加了幾個配置選項。
- @ConditionalOnEnabledEndpoint 可以在任何組件上使用(例如,僅端點需要的組件,如果端點被禁用,則不應創建)。
- @ConditionalOnMissingServletFilterFilterRegistration在測試是否Filter缺少bean時可以尊重bean
- @WebMvcTest也自動配置Spring Data REST(例如,支持Sort和Pageable請求參數)。
- 切片測試現在都具有一個properties屬性,可以根據需要一致地自定義環境
- 支持增加了多個 RestDocsMockMvcConfigurationCustomizer
- 安全配置現已應用于WebTestClient。有關測試安全端點的更多信息,請參考Spring Security參考文檔的相關部分。
- WebExceptionHandlers 支持 @WebFluxTest
- @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) 現在可以為管理服務器生成一個單獨的隨機端口。
- 現在,自動配置排除項將始終應用。
Spring Boot 2.1中的棄用
- setConnectTimeout(int)并且setReadTimeout(int)已被不贊成使用類似方法所取代Duration。
- 設置數據大小的方法,int(廢棄)已替換為 DataSize。
- management.endpoints.jmx.unique-names 不贊成使用 spring.jmx.unique-names
- 為了支持使用Spring Security的注釋,不推薦使用secureon屬性。@AutoConfigureMockMvc@WithMockUser
- RestTemplateBuilder.basicAuthorization已不推薦使用basicAuthentication。
- REQUEST_WRAPPER_FILTER_MAX_ORDER在AbstractFilterRegistrationBean并FilterRegistrationBean已被替換OrderedFilter.REQUEST_WRAPPER_FILTER_MAX_ORDER。
配置屬性更改
- spring.security.oauth2.client.registration.login.*.redirect-uri-template不贊成使用該物業spring.security.oauth2.client.registration.login.*.redirect-uri
- 該spring.security.oauth2.resource.jwt.jwk.set-uri屬性已重命名為spring.security.oauth2.resourceserver.jwt.jwk-set-uri
- 該spring.cloud.enabled屬性已刪除(CloudServiceConnectorsAutoConfiguration如果您需要禁用云連接器,則不包括在內)
- management.metrics.binders.*.enabled已刪除所有屬性,以便直接排除自動配置。
總結
以上是生活随笔為你收集整理的Spring Boot 2.1 版本变化[翻译]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cordova 插件详解
- 下一篇: 寒哥细谈之AutoLayout全解