Spring Boot 2.0 神器横空出世,新功能炫晕我们的双眼 !

千呼万唤始出来,犹抱琵琶半遮面。经过17个月的等待之后,在北京时间2018年3月1日,Spring Boot2.0正式发布。作为Spring生态中重要的开源项目,Spring Boot大大简化了Spring应用的初始创建以及开发过程。用户只需要“run”就能创建一个独立的,产品级别的应用,从而让用户真正的Focus在自己的业务,而不是被淹没在无休无尽的Spring MVC+Spring+Hibernate的jar包兼容性泥潭里面。从发布第一个正式版本到2.0X,共经历了4年了时间,Spring Boot已经是一个拥有21000多Stars, 15000多次commits,贡献者超过400多名的超热门开源项目。 那这次Spring Boot2.0的发布,有哪些值得我们关注的亮点呢?

Spring Boot 2.0 神器横空出世,新功能炫晕我们的双眼 !

基于Java8, 支持Java9

Spring Boot2.0要求Java最低版本为Java8,同时也支持Java9。这就意味不可以使用Java7或者更低的版本运行Spring Boot2.0

Spring Boot 2.0 神器横空出世,新功能炫晕我们的双眼 !

支持响应式编程

·使用Spring WebFlux/WebFlux.fn提供响应式的Web编程支持。

·为各种组件的响应式编程提供了自动化配置,如:Reactive, Spring Data, Reactive Spring security等。

HTTP/2支持

为Tomcat, Undertow和Jetty提供了HTTP/2的支持。

Kotlin支持

引入对Kotlin1.2.X的支持,并提供了一个runApplication函数,通过使用Kotlin来运行Spring Boot应用程序。

Spring Boot 2.0 神器横空出世,新功能炫晕我们的双眼 !

支持 Quartz

Spring Boot2.0开始提供对 Quartz 的支持,只需加入spring-boot-starter-quartz starter就可以启用。而且支持基于内存和基于Jdbc两种存储。

JSON-B 支持

除了Jackson 和 Gson,现在还支持了JSON-B(包括JSON-B测试)。

Spring Security

大大的简化了安全自动配置。同时也加入了对于OAuth 2.0的支持, 使得开发人员能够更加友好的使用spring-security。

Gradle 插件

Spring Boot对Gradle插件进行了重写,做了重大的改变。

全新的执行器架构

在基于Spring Boot的应用程序内通过Endpoint可以根据应用程序业务需求实现自定义的监控接口,Spring 2.0 对于执行器端点(Actuator Endpoint)有很多改进和优化,经过重新设计后的Spring Boot 2 在Endpoint方面带来了全新的架构。全新的执行器架构,支持 Spring MVC, WebFlux 和 Jersey。

Thymeleaf 3

Spring Boot 2支持了Thymeleaf 3,其中有哪些值得我们关注的新特性呢?

·由于使用新的解析系统,Thymeleaf不再基于XML。

·引入新的文本模式,它给Thymeleaf提供了输出CSS, JavaScript和纯文本的功能。

·重写了引擎,性能显著提高。

配置属性的绑定

T在Spring Boot 2.0中,用于将环境(Environment)属性绑定到@ConfigurationProperties的机制已经彻底改进。 我们借此机会收紧了松散绑定的规则,并修复了Spring Boot 1.x中的许多不一致之处。

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

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

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

my:property:- first-name: Janelast-name: Doe- first-name: Johnlast-name: Doe

数据的支持

·SpringBoot2.0中默认的数据池已经从Tomcat pool更换为HikariCP。HikariCP为我们提供了更好性能,提高了访问DB的速度。

·对JOOQ的支持。

·现在可以使用spring.cache.redis.*属性配置 Redis 的缓存默认值。

·优化MongoDB\Hibernate。

转换器支持

绑定使用了一个新的ApplicationConversionService类,它提供了一些对属性绑定特别有用的额外转换器。 最值得注意的是持续时间类型和分隔字符串的转换器。

持续时间转换器允许以ISO-8601格式或简单字符串(例如10m表示10分钟)指定持续时间。 现有的属性已更改为始终使用持续时间。 @DurationUnit注释通过设置未指定的单位来确保后向兼容性。 例如,Spring Boot 1.5中预期秒数的属性现在具有@DurationUnit(ChronoUnit.SECONDS),以确保简单的值(如10)实际上使用10秒。

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

第三方库的升级

·Jetty 9.4

·Tomcat 8.5

·Flyway 5

·Hibernate 5.2对

·Gradle 3.4

·Thymeleaf 3.0

动画 ASCII 艺术

最后,仅仅是为了好玩,Spring Boot 2.0 开始支持动画 GIF 。下面是一个用SpringBoot 2.0 生成的动画。

Spring Boot 2.0 神器横空出世,新功能炫晕我们的双眼 !

SpringBoot2.0 中出现的新面孔

通过学习以上内容,在Spring Boot2.0中的我们发现了许多的新的名词,接下来我们就一起了解一下:

1. WebFlux?

WebFlux 模块的名称是 spring-webflux。Spring webflux 是一个全新的非堵塞的函数式 Reactive Web 框架,可以用来构建异步的、非堵塞的、事件驱动的服务,在伸缩性方面表现非常好。在服务器端 WebFlux 支持2种不同的编程模型:

·基于 Spring MVC 注解 @Controller 等

·基于Functional 函数式路由

2. HikariCP

HikariCP是一个高性能的JDBC连接池。Hikari是日语“光”的意思。可能是目前java业界最快的数据库连接池。

3. JOOQ

JOOQ 是基于Java访问关系型数据库的工具包。JOOQ 保留了传统ORM操作数据的简单性和安全性,又有原生sql的灵活性。

是否选择升级?

Spring Boot2.0相对于1.0的版本的增加了许多新的特性,最重要的是Spring Boot不再支持JDK7及以下版本,目前国内大多数公司仍旧使用的是JDK7和JDK6,甚至是更低的版本。另外一个新的大版本发布之后难免会有Bug, 等待使用一段时间之后才会慢慢稳定下来。因此我的建议是,如果不是特别着急使用Spring Boot2.0的新特性就尽量不要进行升级,等到Spring Boot2.0彻底稳定下来再使用。

学习书籍推荐

目前学习SpringBoot的经典书籍还是由参与Spring和SpringBoot的开发者克雷格·沃斯(Craig Walls)编著的《SpringBoot实战》,这本书不厚,但绝对是快速入门SpringBoot的经典书籍,京东上就有卖,点击下图就可以直接进入京东商城购买。

但是如果是初学者建议先看一下Spring的基础知识,可以先看《Spring实战(第4版)》,也是由雷格·沃斯(Craig Walls)编著。

总结


分享到:


相關文章: