Spring boot 2.0 Release note 翻译

原文链接:

Spring Boot 2.0 Release Notes · spring-projects/spring-boot Wiki · GitHub

此处只进行一个翻译,供大家学习参考。

从Spring Boot 1.5升级


        由于这是Spring Boot的一个主要版本,升级现有的应用程序可能比平常要复杂一些。我们已经编写了一份专门的迁移指南,帮助您升级现有的Spring Boot 1.5应用程序Spring Boot 2.0 Migration Guide · spring-projects/spring-boot Wiki · GitHub
        如果您当前使用的是Spring Boot的早期版本,我们强烈建议您在迁移到Spring Boot 2.0之前升级到Spring Boot 1.5。

New and Noteworthy

PS:这东东我就懒得翻译了……

查看配置更改日志,了解配置更改的完整概述:

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Configuration-Changelog

Java最低版本为Java 8,支持Java9

        Spring Boot 2.0要求Java 8作为最低版本。许多现有的API都经过了更新,以利用Java8的特性,例如:接口上的默认方法、函数回调,以及javax等新API。时间如果您当前使用的是Java 7或更早版本,那么在开发Spring Boot 2.0应用程序之前,您需要升级JDK。
Spring Boot 2.0同样在Java9版本下运行良好,并通过了我们的测试。我们所有的JAR都会在清单中自动输入模块名称,以实现模块系统兼容性。

第三方库升级

Spring Boot 2.0构建于Spring Framework 5之上,需要Spring Framework 5。您可能想了解Spring Framework 5.0中提供的新功能(What's New in Spring Framework 5.x · spring-projects/spring-framework Wiki · GitHub),并在继续之前查看它们的升级指南。

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

Tomcat 8.5

Flyway 5

Hibernate 5.2

Thymeleaf 3

Reactive Spring

Spring项目组合中的许多项目现在都为开发Reactive应用程序提供了一流的支持。Reactive应用程序完全异步且无阻塞。它们用于事件循环执行(event-loop execution)模型(而不是更传统的每个请求一个线程执行模型)。Spring框架参考文档中的“Web on Reactive Stack”(Web on Reactive Stack)部分为这个主题提供了极好的入门知识。

Spring Boot 2.0通过自动配置和启动器POM完全支持反应式应用程序。Spring Boot本身的内部结构也在必要时进行了更新,以提供reactivealernatives(最引人注目的是我们的嵌入式服务器支持)。

spring Webflux 和 WebFlux.fn。

Spring WebFlux是Spring MVC的一种完全无阻塞的反应式替代方案。Spring Boot为基于注释的Spring WebFlux应用程序以及WebFlux提供自动配置。fn提供了一个更具功能性的API。

首先,使用spring boot starter webflux starter POM,它将提供由嵌入式Netty服务器支持的spring webflux。有关详细信息,请参阅Spring Boot参考文档。

Reactive Spring Data

在底层技术支持的情况下,Spring Data还为Reactive Application提供支持。目前,Cassandra、MongoDB、Couchbase和Redis都支持Reactive  API。

Spring Boot为这些技术提供了特殊的入门POM,为您提供入门所需的一切。例如,spring boot starter data mongodb reactive包含对reactive mongo驱动程序和项目reactor的依赖关系。

Reactive Spring Security

Spring Boot 2.0可以利用Spring Security 5.0来保护您的反应式应用程序。每当Spring Security位于类路径上时,就会为WebFlux应用程序提供自动配置。

可以通过SecurityWebFilterChain配置使用WebFlux的Spring Security的访问规则。如果您以前在Spring MVC中使用过Spring安全性,那么您应该对它非常熟悉。有关更多详细信息,请参阅Spring boot参考文档(Spring Boot Reference Guide)和Spring Security文档(Spring Security Reference)。

嵌入式Netty服务器

由于WebFlux不依赖Servlet API,我们现在首次能够将Netty作为嵌入式服务器提供支持。spring boot starter webflux starter POM将引入Netty 4.1和Ractor Netty。

注意:

您只能将Netty用作被动服务器。未提供阻塞式servlet API支持。

支持HTTP/2 

为 Tomcat、Undertow 和 Jetty 提供了 HTTP/2 支持。 支持取决于所选的 Web 服务器和应用程序环境(因为 JDK 8 不支持开箱即用的协议)。

有关详细信息,请参阅:Spring Boot Reference Guide

Configuration Property Binding

Spring Boot 2.0 对用于将 Environment 属性绑定到 @ConfigurationProperties 的机制进行了彻底改革。 我们借此机会收紧了管理宽松绑定的规则,并修复了 Spring Boot 1.x 中的许多不一致之处。

新的 Binder API 也可以在您自己的代码中直接在 @ConfigurationProperties 之外使用。 例如,以下将绑定到 PersonName 对象列表:

List<PersonName> people = Binder.get(environment)
    .bind("my.property", Bindable.listOf(PersonName.class))
    .orElseThrow(IllegalStateException::new);

配置源可以像这样在 YAML 中表示:

my:
  property:
  - first-name: Jane
    last-name: Doe
  - first-name: John
    last-name: Doe

有关更新的绑定规则的更多信息,请参阅此 wiki 页面

Property Origins(配置起源?)


Spring Boot 加载的 YAML 文件和属性文件现在包含 Origin 信息,可以帮助您跟踪项目的加载位置。 一些 Spring Boot 特性利用了这些信息并在适当的时候显示出来。

例如,绑定失败时抛出的 BindException 类是 OriginProvider。 这意味着可以从故障分析器中很好地显示原始信息。

另一个例子是 env actuator 端点,它在可用时包含原始信息。 下面的代码片段显示 spring.security.user.name 属性来自打包在 jar 中的 application.properties 文件的第 1 行第 27 列:

{
  "name": "applicationConfig: [classpath:/application.properties]",
  "properties": {
    "spring.security.user.name": {
      "value": "user",
      "origin": "class path resource [application.properties]:1:27"
    }
  }
}

转化支持(Converter Support)

绑定使用了一个新的 ApplicationConversionService 类,该类提供了一些对属性绑定特别有用的附加转换器。 最引人注目的是 Duration 类型和分隔字符串的转换器。

持续时间转换器允许以 ISO-8601 格式或简单字符串(例如 10m 10 分钟,支持其他单位)指定持续时间。 现有属性已更改为始终使用 Duration。 例如,可以在 application.properties 中将会话超时配置为 180 秒,如下所示:

server.servlet.session.timeout=180s

@DurationUnit 注释通过设置使用的单位(如果未指定)来确保向后兼容。 例如,在 Spring Boot 1.5 中预期为秒的属性现在具有 @DurationUnit(ChronoUnit.SECONDS) 以确保诸如 10 之类的简单值实际上使用 10s。

分隔字符串转换允许您将简单的字符串绑定到集合或数组,而不必用逗号分隔。 例如,LDAP base-dn 属性使用 @Delimiter(Delimiter.NONE) 以便不会误解 LDAP DN(通常包括逗号)。

Gradle 插件

Spring Boot 的 Gradle 插件已在很大程度上进行了重写,以实现许多重大改进。 您可以在其参考和 api 文档中阅读有关插件功能的更多信息。

Spring Boot 现在需要 Gradle 4.x。 如果您要升级使用 Gradle 的项目,请查看迁移指南

Kotlin

Spring Boot 2.0 现在包括对 Kotlin 1.2.x 的支持,并提供了一个 runApplication 函数,该函数提供了一种使用惯用 Kotlin 运行 Spring Boot 应用程序的方法。 我们还公开和利用其他 Spring 项目(例如 Spring Framework、Spring Data 和 Reactor)已添加到其最新版本中的 Kotlin 支持。

有关更多信息,请参阅参考文档的 Kotlin 支持部分。

Actuator 优化

Spring Boot 2.0 对执行器端点进行了许多改进和改进。 所有 HTTP 执行器端点现在都暴露在 /actuator 路径下,并且生成的 JSON 有效负载已得到改进。

我们现在也不会默认暴露这么多端点。 如果您要升级现有的 Spring Boot 1.5 应用程序,请务必查看迁移指南并特别注意 management.endpoints.web.exposure.include 属性。

Actuator JSON

Spring Boot 2.0 改进了从许多端点返回的 JSON 有效负载。

许多端点现在都有更准确地反映底层数据的 JSON。 例如,/actuator/conditions 端点(Spring Boot 1.5 中的 /autoconfig)现在有一个顶级上下文键,用于按 ApplicationContext 对结果进行分组。

现在还使用 Spring REST Docs 生成广泛的 REST API 文档,并随每个版本发布。

支持 Jersey 和 WebFlux 

除了 Spring MVC 和 JMX 支持,您现在可以在开发纯 Jersey 或 WebFlux 应用程序时访问执行器端点。 Jersey 支持通过自定义 Jersey 资源提供,WebFlux 使用自定义 HandlerMapping。

/actuator 端点现在提供 HAL 格式的响应,提供指向所有活动端点的链接(即使您的类路径中没有 Spring HATEOAS)。

Actuator @Endpoints

为了支持 Spring MVC、JMX、WebFlux 和 Jersey,我们为执行器端点开发了一种新的编程模型。 @Endpoint 注解可以与@ReadOperation、@WriteOperation 和@DeleteOperation 结合使用,以与技术无关的方式开发端点。

您还可以使用 @EndpointWebExtension 或 @EndpointJmxExtension 编写对端点的技术特定增强。 有关详细信息,请参阅更新的参考文档。

Micrometer

Spring Boot 2.0 不再附带自己的指标 API。 相反,我们依靠 micrometer.io 来满足所有应用程序监控需求。

千分尺包括对维度度量的支持,当与维度监控系统配对时,允许有效访问特定命名的度量,并能够向下钻取其维度。

指标可以导出到各种系统,开箱即用的 Spring Boot 2.0 支持 Atlas、Datadog、Ganglia、Graphite、Influx、JMX、New Relic、Prometheus、SignalFx、StatsD 和 Wavefront。 此外,还可以使用简单的内存指标。

提供了 JVM 指标(包括 CPU、内存、线程和 GC)、Logback、Tomcat、Spring MVC 和 RestTemplate 的集成。

有关更多详细信息,请参阅参考文档中更新的“指标”部分。

Data Support

除了上面提到的“Reactive Spring Data”支持之外,数据领域还进行了其他一些更新和改进。

其他的懒得写了……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值