史上最全 SpringBoot 2.1.0.RELEASE 版本特性介绍(全文英译版)

Spring Boot 2.1.RELEASE 

参考链接:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.1-Release-Notes#new-and-noteworthy

Spring Boot 2.1 Release Notes

Upgrading from Spring Boot 2.0

Deprecations from Spring Boot 2.0

在Spring Boot 2.0中弃用的类、方法和属性已经在这个版本中删除了。请确保在升级之前没有调用已弃用的方法。

Spring Framework 5.1

Spring Boot 2.1 使用 Spring Framework 5.1. 请参考它的升级指南-upgrade guide,了解任何可能影响您的应用程序的更改。

Bean Overriding

默认情况下禁用了Bean重写,以防止Bean被意外地重写。如果依赖于重写,则需要设置spring.main.allow-bean-definition-overriding=true.

Auto-Configuration Exclusion

排除现在被一致地应用,而不仅仅是局部地应用。这适用于在@EnableAutoConfiguration, @SpringBootApplication, @ImportAutoConfiguration或 spring.autoconfigure.exclude属性。

Actuator 'info' and 'health' Endpoint Security

如果spring-security在没有任何安全配置的类路径上,那么/info和/health现在将公开以保持一致性。如果在类路径上有spring-security,但不提供任何安全配置,则需要显式保护它们。

Servlet Path

The server.servlet.path property has moved to spring.mvc.servlet.path. If you were relying on that property programmatically to know the path of the DispatcherServlet please use DispatcherServletPath instead.

server.servlet.path 属性已移至spring.mvc.servlet.path。如果您通过编程的方式依赖该属性来了解DispatcherServlet的路径,请使用DispatcherServletPath。

@WebMvcTest and @WebFluxTest Security Configuration

用户配置现在自动包含在web片测试中。@WebMvcTest查找WebSecurityConfigurer bean,而@WebFluxTest查找ServerHttpSecurity bean。

Logging Refinements

Spring Framework 5.1在使用web应用程序(Spring MVC或Spring WebFlux)时重新访问了调试日志输出。如果你试图调试一个应用程序,并且你想恢复Spring Boot 2.0风格的日志记录,你应该在application.properties中添加以下内容:

logging.level.web=debug

您可能还想设置spring.http.log-request-details为true,记录实际请求的详细信息。默认情况下,此属性为false,因为它可能暴露敏感信息。

Narayana JTA Support

为了支持与Narayana版本更加一致的官方支持,Narayana的支持已经被删除。如果你使用的是spring-boot-starter-jta-narayana,新的坐标如下:

    me.snowdrop    narayana-spring-boot-starter    2.0.1

请参考 the documentation 以了解更多细节。

ActiveMQ Pooling

If you were using activemq-pool, support has been removed in this release in favor of pooled-jms that offers the same features while being JMS 2.0 compliant. You can update your build as follows:

如果您正在使用activemq-pool,那么在这个版本中已经删除了对pooled-jms的支持,pooled-jms提供了相同的特性,同时兼容JMS 2.0。你可以更新你的构建如下:

HttpPutFormContentFilter

HttpPutFormContentFilter has been deprecated in favor of FormContentFilter. As a result the spring.mvc.formcontent.putfilter.enabled property is no longer defined. If you were using this feature, please update to spring.mvc.formcontent.filter.enabled.

HttpPutFormContentFilter已经被弃用,取而代之的是FormContentFilter。 spring.mvc.formcontent.putfilter.enabled 结果属性不在被定义。如果你正在使用这个特性,请更新到spring.mvc.formcontent.filter.enabled。

OAuth2 Client Configuration

The structure of the spring.security.oauth2.client.registration has been reworked in a single tree rather than having an authorizationcode and clientcredentials sub namespace.

spring.security.oauth2.client.registration 的结构已经在在单个树中重新注册,而不是使用authorizationcode和clientcredentials子名称空间。

Micrometer 'all' SLA Handling

management.metrics.distribution.sla错误地描述了一个all meter ID可以用于为所有度量设置SLA 。这个特性不能正确地实现,因为单位可能会根据仪表类型不同而不同。

InfluxDB HttpClient Customization

在前面,声明OkHttpClient.Builder bean足以定制InfluxDB使用的客户端。要确保隔离此类自定义,请定义一个InfluxDbOkHttpClientBuilderProvider bean。

Maven Plugin

finalName属性不再是可定制的,以与标准Maven插件的行为保持一致。

如果您正在定制repackage目标,那么主执行现在有一个必须指定的repackage id,参考the updated sample.。

Spring Version POM Property

在spring-boot-dependencies POM中定义的spring.version属性已被重命名。要覆盖Spring Framework版本,现在应该使用 spring-framework.version属性。除非绝对必要,我们通常建议您坚持使用托管框架版本。

Removal of 'spring.provides' Files

starter 可以声明META-INF/spring.provides,以便IDE能够找出它所提供的依赖项。扫描starter POM以寻找它声明的直接依赖项应该足以作为一种指示。如果您是第三方启动器的负责人,并且声明了这个文件,那么可以删除它。

Thymeleaf Spring Security Extras

Thymeleaf的Spring Security Extras模块的依赖管理和自动配置已经从 thymeleaf-extras-springsecurity4 切换到 thymeleaf-extras-springsecurity5。如果您正在使用模块,则应该更新您的pom.xml或build.gradle依赖thymleaf -extras-springsecurity5。

Json Simple

不再提供json-simple的依赖项管理,使用它的JsonParser实现也已删除。

Jersey 1

Jersey 1 不再支持。请升级到 Jersey 2.

Hibernate EhCache Support

如果你使用hibernate-ehcache来使用EhCache 2作为Hibernate的二级缓存提供商,它在Hibernate 5.3中已经弃用。

Endpoint ID names

如果您已经开发了自己的执行器@Endpoint bean,那么您应该确保它们遵循Spring Boot 2.1中引入的更严格的命名规则。具体来说,IDs应该是只包含字母数字的,并且必须以字母开头(有关完整细节,请参阅EndpointId类文档)。

如果你用 - or . 字符 Spring Boot 2.1将记录一个警告并要求您迁移到正确的格式。

Lombok

Spring Boot 2.1已经升级到Lombok 从1.16.x 到 1.18.x。在1.18中,默认情况下Lombok将不再生成私有的、无参数的构造函数。在 lombok.config configuration file 中,可以通过设置 lombok.noArgsConstructor.extraPrivate=true 启动它。有关Lombok更改的更多信息,请参阅其更改日志-changelog

Java Persistence API dependency

作为升级到Hibernate 5.3的一部分,托管Java持久化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来确定属性:

Consistent max HTTP header size across all embedded web servers

The default max HTTP header size is now consistent across the four supported embedded web servers (Jetty, Netty, Tomcat, and Undertow) and is 8KB. The size can be customized using the server.max-http-header-size property.

默认的最大HTTP报头大小现在在四个支持的嵌入式web服务器(Jetty、Netty、Tomcat和Undertow)中是一致的,是8KB。可以使用server.max-http-header-size属性。

New and Noteworthy

Tip Check the configuration changelog 查看配置更改的完整概述。

Third-party Library Upgrades

Spring Boot 2.1构建于Spring Framework 5.1之上,并且需要Spring Framework 5.1。

我们已经尽可能地升级到其他第三方jar的最新稳定版本。这个版本中一些值得注意的依赖升级包括:

Tomcat 9

Undertow 2

Hibernate 5.3

JUnit 5.2

Micrometer 1.1

Java 11 Support

Spring Boot 2.1仍然与Java 8兼容,但现在也支持Java 11。我们配置了持续集成,以针对最新的Java 11版本构建和测试Spring Boot。

DataSize Support

如果一个属性需要以字节或类似的方便单位表示大小,它可以公开org.springframework.util.unit.DataSize属性。与我们在Spring Boot 2.0中引入的持续时间支持类似,数据大小支持一种简单的格式(即10MB for 10 兆字节)和元数据支持。所有相关配置属性都已更新,以使用新类型。

Context ApplicationConversionService Support

ApplicationConversionService 现在默认注册到SpringApplication创建的环境和BeanFactory中。这允许你直接使用应用程序转换器和Spring Framework 的核心项目,比如@Value注释:

Profile Expression

Profile matching has been improved to support an expression format. For instance production & (us-east | eu-central) indicates a match if the production profile is active and either the us-eas to reu-central profiles are active.

配置文件匹配已得到改进,以支持一种表达式格式- an expression format。例如,production & (us-east | eu-central) 表示匹配,如果production 配置文件是激活的,并且 us-east 和  eu-central 配置文件是激活的。

配置文件表达式可以使用如下:

Enable componets using @Profile

Load multi-profile YAML Documents

Enable Logback configuration using <springProfile>

Task Execution

Spring Boot现在为ThreadPoolTaskExecutor提供自动配置。如果你正在使用@EnableAsync,你的自定义TaskExecutor可以被删除,以便从spring.task.execution namespace中进行定制。使用TaskExecutorBuilder可以轻松创建自定义ThreadPoolTaskExecutor。

Task Scheduling

与新的任务执行支持类似,当指定@EnableScheduling时,Spring Boot自动配置ThreadPoolTaskScheduler。任务调度程序可以使用spring.task.scheduling 进行定制。默认情况下,TaskSchedulerBuilder也是可用的。

Logging Groups

Logger groups can be defined to allow related loggers to be configured in one go. For example, you could declare a tomcat group that allows you to configure org.apache.catalina, org.apache.coyote and org.apache.tomcat loggers with a single key:

可以定义记录器组,以允许一次性配置相关的记录器。例如,您可以声明一个允许配置具有单独key的org.apache.catalina, org.apache.coyote和org.apache.tomcat 日志记录器的tomcat组。

方便的web和sql组是开箱即用的。See the reference guide for details.

Maven Plugin

指定参数已经改进为系统属性(system properties)和环境变量(environment variables)的专用选项。也可以重新打包并替换分类工件,查看分类器属性的更新文档-the updated documentation

Bootstrap mode for JPA setup

Spring Data Lovelace introduces a 'bootstrap mode' for the repositories. Spring Boot exposes a property that can be set to control the boostrap mode of JPA repositories. For instance, to defer initialization of JPA repositories, simply add the following to your configuration:

Spring Data Lovelace为存储库引入了一种“bootstrap mode”。Spring Boot公开了一个属性,可以设置该属性来控制JPA存储库的引导模式。例如,要延迟JPA存储库的初始化,只需在配置中添加以下内容:

spring.data.jpa.repositories.bootstrap-mode=deferred

当将模式设置为延迟时,JPA设置将在一个单独的线程中进行。

Kafka Streams Support

自动配置现在提供给Kafa Streams当一个org.apache.kafka:kafka-streams 依赖关系被声明了。详情请参阅更新的the updated Spring Boot documentation 文档和Spring Kafka documentation 文档。

Spring Data JDBC Support

Spring Data包括对JDBC的存储库支持,并将自动为CrudRepository上的方法生成SQL。当必要的依赖项在类路径上时,Spring Boot将自动配置Spring Data的JDBC存储库。它们可以通过spring-boot-starter-data-jdbc的单个依赖项添加到项目中。

关于Spring Data JDBC的完整细节,请参阅reference documentation.

JMS ConnectionFactory Caching

The auto-configured ConnectionFactory is cached by default using CachingConnectionFactory until the pooling option is enabled or spring.jms.cache.enabled is set to false. Pooling option has also been extended to Artemis (see spring.jms.artemis.pool.*).

自动配置的ConnectionFactory默认使用CachingConnectionFactory进行缓存,直到启用 pooling 选项或spring.jms.cache.enabled 设置为false。pooling 选项也被扩展到Artemis(参见spring.jms.artemis.pool.*)。

Elasticsearch REST Clients

作为Jest的替代选项,RestClient和RestHighLevelClient的自动配置提供了spring.elasticsearch.rest.*名称空间中的可配置选项。

JUnit 5

All @…​ annotations are meta-annotated with @ExtendWith(SpringExtension.class) so this redundant part of the setup can be removed if you’re using JUnit 5. Spring Boot also uses a maven-surefire-plugin version that does not require any custom setup to use JUnit 5.

所有的@…Test注解都是用 @ExtendWith(SpringExtension.class)进行元注解的,所以如果您使用JUnit 5,就可以删除这个多余的设置部分。Spring Boot还使用maven-surefire-plugin版本,使用JUnit 5不需要任何自定义设置。

Security

OAuth2 WebFlux Support

Support for WebFlux OAuth2 login has been added. OpenID Connect providers are easier to configure using an issuer-uri which is the URI that the it asserts as its Issuer Identifier.

添加支持WebFlux OAuth2登录。使用 issuer-uri (其声明为发布者标识符的URI)更容易配置OpenID连接提供者。

OAuth2 resource server support

If you have spring-security-oauth2-resource-server on your classpath, Spring Boot can set up an OAuth2 Resource Server as long as a JWK Set URI is specified. For instance:

如果您的类路径上有spring-security-oauth2-resource-server,那么只要指定了JWK集URI, Spring Boot就可以设置OAuth2资源服务器。例如:

MVC和WebFlux应用程序都支持这一点。

Non-web OAuth Applications

现在,编写非web OAuth应用程序变得更容易了,因为我们提供了一个自动配置的InMemoryReactiveClientRegistrationRepository bean,而不管应用程序类型是什么。如果您正在编写一个不使用嵌入式web服务器的应用程序(例如CLI应用程序),您现在可以直接注入并使用配置的注册存储库。

Actuator Endpoints

Caches Endpoint

A new /actuator/caches endpoint lists the available CacheManager instances and their respective caches with basic metadata. Seethe APIfor more details.

一个新的/actuator/caches端点列出了可用的CacheManager实例和它们各自的带有基本元数据的缓存。查看the API了解更多细节。

Spring Integration Graph Endpoint

If you are using Spring Integration, a graph representation of all Spring Integration components can be exposed at /actuator/integrationgraph. Please seethe APIfor more details.

如果您正在使用Spring Integration,所有Spring Integration 组件的图形表示可以在/actuator/integrationgraph处公开。详情请参阅the API

Health Endpoint

现在可以使用HealthIndicatorRegistry bean在运行时添加和删除HealthIndicator。运行状况端点也得到了改进,可以在必要时查询特定的指示器。例如 /actuator/health/db只执行 “db” HealthIndicator。详情请参阅the API

Apache Cassandra的反应性HealthIndicator 可用。

Micrometer

Common Micrometer Tags

通用标签可以声明地应用到所有仪表,如下面的例子所示:

上面的例子为所有值分别为us-east-1和prod的仪表添加了region和stack标签。

Auto-configuration Support For New Metrics

指标覆盖率得到了改进,包括:

Hibernate metrics

Spring Framework’s WebClient

Kafka consumer metrics

Log4j2 metrics

Jetty server thread pool metrics

Server-side Jersey HTTP request metrics

Auto-configuration support for new registries

以下指标注册表现在在类路径上自动配置:

AppOptics

Humio

KariosDB

此外,还添加了对Prometheus push gateway的支持。

Additional histogram configuration properties

新的management.metrics.distribution.maximum-expected-value.*和management.metrics.distribution.minimum-expected-value.* 属性可用于控制每米(per-meter basis)的最大值和最小期望值。

Miscellaneous

除了上面列出的变化,还有很多小的调整和改进,包括:

Jackson 可见性(visibility)使用spring.jackson.visiblity.*进行配置。

使用自动配置的WebServiceTemplateBuilder更容易创建WebServiceTemplate。

当使用Devtools时,错误页面显示堆栈跟踪。

不再需要导出虚拟资源(ResourceConfig )来启用Jersey支持。

JNDI查找已经得到改进,默认情况下启用了resourceRef。

可以通过RabbitRetryTemplateCustomizer定制Rabbit基础设施使用的RetryTemplate。

默认RabbitTemplate的接收队列现在是可配置的

Tomcat的最大swallow大小现在可以通过属性进行配置

HTTP/2 with Reactor Netty Server 现在被支持。

Kafka自动配置现在支持errorHandler、transactionManager和afterRollbackProcessor bean。

添加了对全局生成唯一 JMX ObjectNames的支持(而不是将此特性限制在执行器端点( Actuator Endpoints))

配置属性元数据现在是有序的,弃用的项出现在最后。

关于Health.Builder 的withDetails方法现在也支持Map。

A reactive ReactiveJwtDecoder is now auto-configured when you have an issuer url defined.

当您定义了一个 issuer url时,一个响应式ReactiveJwtDecoder现在是自动配置的。

BackgroundPreinitializer可以被禁用,如果一个spring.backgroundpreinitializer.ignore 系统属性被设置。

HiddenHttpMethodFilter 可以被启动通过使用属性。

The JAP starter POM 现在开箱即用在 Java 9+

MongoDB的自动配置现在将退出当 com.mongodb.client.MongoClient  bean被定义(以及更常见的com.mongodb.MongoClient)。

您现在可以选择使用Jetty RS作为web客户端的HTTP驱动程序

在spring.quartz空间添加了几个配置选项。

@ConditionalOnEnabledEndpoint可以使用在任何component (例如:仅端点需要的内容,如果端点被禁用,则不应该创建这些内容).

@ConditionalOnMissingServletFilter 是值得获得尊重在 FilterRegistration beans当测试是否缺少一个Filter bean时。

@WebMvcTest也会自动配置Spring Data REST(例如支持排序和可分页请求参数)。

切片测试(slice tests)现在都有一个properties属性,可以在必要时一致地自定义环境。

支持添加了多个RestDocsMockMvcConfigurationCustomizer

安全配置现在应用到WebTestClient。有关测试安全端点的更多信息,请参阅Spring Security参考文档的相关部分-relevant section

@WebFluxTest现在支持WebExceptionHandlers 

@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)现在可以为管理服务器生成一个单独的随机端口。

自动配置排除现在被一致地应用。

Deprecations in Spring Boot 2.1

setConnectTimeout(int)和setReadTimeout(int)已被弃用,取而代之的是需要持续时间(Duration)的类似方法。

使用int设置数据大小的方法已被弃用,并被采用DataSize的变量所取代。

management.endpoints.jmx.unique-names已被弃用,取而代之的是spring.jmx.unique-names。

@AutoConfigureMockMvc 上的安全属性已被弃用,取而代之的是Spring Security’s @WithMockUser 注解。

RestTemplateBuilder.basicAuthorization已被弃用,取而代之的是basicAuthentication。

REQUEST_WRAPPER_FILTER_MAX_ORDER in AbstractFilterRegistrationBean and FilterRegistrationBean 已经被 OrderedFilter.REQUEST_WRAPPER_FILTER_MAX_ORDER代替。

Configuration Property Changes

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 属性被删除,取而代之的是 直接排除自动配置。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容