springboot2.0新特性有哪些?

TheDisguiser 2020-07-14 17:55:25 java常见问答 7008

Springboot在java中现在可谓是声名鹤起,它优越的特性使得大部分java项目现在都离不开它了。在Springboot2.0中出现了许多强大的新特性,小伙伴们知道都有哪些吗?下面就听小编介绍介绍吧。

一、Java 8 Baseline和Java 9支持

Spring Boot 2.0要求最低版本为Java 8。已更新许多现有的API,以利用Java 8的功能,例如:接口上的默认方法,函数回调和javax.time。如果您当前正在使用Java 7或更早版本,则需要先升级JDK,然后才能开发Spring Boot 2.0应用程序。

二、Reactive Spring

Spring 产品组合中的许多项目现在都为开发反应式应用程序提供一流的支持。反应性应用程序是完全异步和非阻塞的。它们旨在用于事件循环执行模型(而不是更传统的每个请求线程执行模型)。

Spring Boot 2.0 通过自动配置和启动器 POM 完全支持反应式应用。Spring Boot 的内部本身也在必要时进行了更新,以提供反应性的反应(最明显的就是我们的嵌入式服务器支持)。

三、嵌入式 NETTY 服务器

由于 WebFlux 不依赖于 Servlet API,Springboot现在可以首次可以为 Netty 作为嵌入式服务器提供支持。该spring-boot-starter-webflux 启动 POM 将拉取 Netty 4.1 和 Ractor Netty 。

PS:只能将 Netty 用作反应式服务器。不提供阻止 servlet API 支持。

四、REACTIVE SPRING SECURITY

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

使用 WebFlux 的 Spring Security 访问规则可以通过SecurityWebFilterChain。如果之前整合过 Spring MVC 和 Spring Security,应该会感到非常熟悉。

五、REACTIVE SPRING DATA

在底层技术支持的情况下,Spring Data 还为反应式应用程序提供支持。目前 Cassandra,MongoDB,Couchbase 和 Redis 都拥有反应式 API 支持。

Spring Boot 包含针对这些技术的特殊 starter-POMs,可以提供启动所需的一切。如:spring-boot-starter-data-mongodb-reactive包括对反应性 mongo 驱动程序和项目反应堆的依赖性。

六、第三方库升级

Spring Boot 2.0 建立在 Spring Framework 5 之上,并且需要 Spring Framework 5 。我们可以通过 What’s New in Spring Framework 5.x 了解 Spring 5 的新特性。

此版本中一些显着的依赖性升级包括:

Tomcat 8.5

Flyway 5

Hibernate 5.2

Thymeleaf 3

七、配置属性绑定

在 Spring Boot 2.0 中,用于绑定Environment属性的机制@ConfigurationProperties已经完全彻底修改。

新的BinderAPI 也可以@ConfigurationProperties直接在你自己的代码之外使用。例如,下面将结合到List的PersonName对象:

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

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

my:
  property:
  -first - name: zhisheng
    last - name: tian 
  -first - name: zhisheng
    last - name: tian

八、配置起源

YAML 文件和被 Spring Boot 加载的 Properties 文件现在包含Origin信息,可帮助跟踪项目从何处加载的信息。有些 Spring Boot 特性利用了这个信息可以在适当的时候展示出来。

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

另一个例子是env执行器端点,当它有可用时包含了原始信息。下面的代码片断显示该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"
}
}
}

九、Gradle 插件

Spring Boot 的 Gradle 插件已在很大程度上进行了重新编写,以实现许多重大改进。

十、转换器支持

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

该Duration转换器允许在任一 ISO-8601 格式中指定的持续时间,或作为一个简单的字符串(例如10m,10 分钟)。现有的属性已更改为始终使用Duration。该@DurationUnit注释通过设置如果没有指定所使用的单元确保向后兼容性。例如,Spring Boot 1.5 中需要秒数的属性现在必须@DurationUnit(ChronoUnit.SECONDS)确保一个简单的值,例如10实际使用的值10s。

分隔字符串转换允许我们简单绑定String到Collection或Array不必分割逗号。例如,LDAP base-dn 属性用 @Delimiter(Delimiter.NONE),所以 LDAP DN(通常包含逗号)不会被错误解释。

十一、Actuator 改进

在 Spring Boot 2.0 中 Actuator endpoints 有很大的改进。所有 HTTP Actuator endpoints 现在都在该/actuator路径下公开,并且生成的 JSON 有效负载得到了改进。

现在在默认情况下也不会暴露很多端点。

十二、Kotlin

Spring Boot 2.0 现在包含对 Kotlin 1.2.x 的支持,并提供了runApplication ,一个使用 Kotlin 运行 Spring Boot 应用程序的方法。同时,还公开和利用了 Kotlin 对其他 Spring 项目(如Spring Framework,Spring Data 和 Reactor)已添加到其最近版本中的支持。

十三、初始化

数据库初始化逻辑在 Spring Boot 2.0 中已经合理化。Spring Batch,Spring Integration,Spring Session 和 Quartz的初始化现在仅在使用嵌入式数据库时才会默认发生。该enabled属性已被替换为更具表现力枚举。例如,如果想一直执行 Spring Batch 的初始化,我们可以设置spring.batch.initialize-schema=always。

如果 Flyway 或 Liquibase 正在管理您的 DataSource 的模式,并且正在使用嵌入式数据库,Spring Boot 现在会自动关闭 Hibernate 的自动 DDL 功能。

十四、ACTUATOR @ENDPOINTS

为了支持 Spring MVC,JMX,WebFlux 和 Jersey,Springboot2.0为 Actuator @Endpoints 开发了一种新的编程模型。该@Endpoint注解可以与@ReadOperation,@WriteOperation 和 @DeleteOperation 组合使用开发 endpoints。

十五、ACTUATOR JSON

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

现在许多端点都具有更精确地反映底层数据的 JSON。例如,/actuator/conditions终端(/autoconfig在Spring Boot 1.5中)现在有一个顶级contexts密钥来将结果分组ApplicationContext。

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

十六、MICROMETER

Spring Boot 2.0 不再提供自己的指标 API。相反,它依靠 micrometer.io 来满足所有应用程序监视需求。

Micrometer 包括尺寸指标的支持,当与尺寸监测系统配对时,尺寸指标可以有效访问特定的指定度量标准,并且可以在其尺寸范围内向下钻取。

指标可以输出到各种系统和开箱即用的 Spring Boot 2.0,为 Atlas,Datadog,Ganglia,Graphite,Influx,JMX,New Relic,Prometheus,SignalFx,StatsD 和 Wavefront 提供支持。另外还可以使用简单的内存中度量标准。

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

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

以上就是今天的全部内容了,小伙伴们对Springboot2.0的特性都了解了吗?如果想了详细的可以去Springboot官网看看,还需要了解更多相关java架构师知识的小伙伴可以关注本站了解。

推荐阅读:

springboot常用注解有哪些?作用是什么?

springboot设置文件上传大小详解,如何设置?

springboot部署jar包到服务器上要如何部署?