Spring Boot 2(一):Spring Boot 2.0新特性

Spring Boot 2(一):Spring Boot 2.0新特性

Spring Boot依赖于Spring,而Spring Cloud又依赖于Spring Boot,所以Spring Boot2.0的发布正式整合了Spring5.0的不少特性,一样后面Spring Cloud最新版本的发布也须要整合最新的Spring Boot2.0内容。java

1、新版本特性

1,基于 Java 8,支持 Java 9

也就是说Spring Boot2.0的最低版本要求为JDK8,据了解国内大部分的互联网公司系统都还跑在JDK1.6/7上,所以想要升级到Spring Boot2.0的同窗们注意啦,同时支持了Java9,也仅仅是支持而已。react

2,响应式编程

使用 Spring WebFlux/WebFlux.fn提供响应式 Web 编程支持, Webflux 是一个全新的非堵塞的函数式 Reactive Web 框架,能够用来构建异步的、非堵塞的、事件驱动的服务,在伸缩性方面表现很是好,此功能来源于Spring5.0。web

Spring Boot2.0也提供对响应式编程的自动化配置,如:Reactive Spring Data、Reactive Spring Security 等redis

3,HTTP/2支持

在Tomcat, Undertow 和 Jetty 中均已支持 HTTP/2spring

4,对Kotlin支持

引入对 Kotlin 1.2.x 的支持,并提供了一个 runApplication 函数,让你经过惯用的 Kotlin 来运行 Spring Boot 应用程序。sql

5,全新的执行器架构

全新的执行器架构,支持 Spring MVC, WebFlux 和 Jersey数据库

6,支持 Quartz

Spring Boot1.0并无提供对 Quartz 的支持,以前出现了各类集成方案,Spring Boot2.0给出了最简单的集成方式。编程

7,Security

大大的简化了安全自动配置tomcat

8,Metrics

Metrics 方面,Spring Boot 2引入了Micrometer,来统一metrics的规范,使得开发人员更好的理解和使用metrics的模块,而不须要关心对接的具体存储是什么。安全

9,监控方面

Spring Boot 2 加强了对 Micrometer 的集成。RabbitMQ、JVM 线程和垃圾收集指标会自动进行 instrument 监控,异步控制器(controller)也会自动添加到监控里。经过集成,还能够对 InfluxDB 服务器进行监控。

10,数据方面

  • db方面,默认引入了HikariCP,替代了以前的tomcat-pool做为底层的数据库链接池, 对比于tomcat-pool, HikariCP拥有更好的性能,总而言之就是提升了db的访问速度
  • JOOQ的支持
  • Redis方面, 默认引入了Lettuce, 替代了以前的jedis做为底层的redis连接方式
  • MongoDB\Hibernate优化

11,Thymeleaf 3

Spring Boot 2支持了Thymeleaf 3,Thymeleaf 3相对于Thymeleaf 2性能提高可不是一点点,由于2.0的性能确实不咋地,同时也使用了新的页面解析系统。

12,OAuth 2.0

同时也加入了 对于OAuth 2.0的支持, 使得开发人员更加友好的使用spring-security来完成权限模块的开发

13,依赖组件的更新

  • Jetty 9.4
  • Tomcat 8.5
  • Flyway 5
  • Hibernate 5.2
  • Gradle 3.4
  • Thymeleaf 3.0

注意:最后还有一个小彩蛋,Spring Boot2.0支持了动态gif的启动logo打印.

2、技术名词解释

Spring 如今做为Java开源界的老大,它的一举一动都影响着行业的技术方向,在此次发布的 Release Notes中发现有不少的技术都尚未了解过,也分享出来:

1,WebFlux 是什么?

WebFlux 模块的名称是 spring-webflux,名称中的 Flux 来源于 Reactor 中的类 Flux。Spring webflux 有一个全新的非堵塞的函数式 Reactive Web 框架,能够用来构建异步的、非堵塞的、事件驱动的服务,在伸缩性方面表现很是好。

非阻塞的关键预期好处是可以以小的固定数量的线程和较少的内存进行扩展。在服务器端 WebFlux 支持2种不一样的编程模型:

  • 基于注解的 @Controller 和其余注解也支持 Spring MVC
  • Functional 、Java 8 lambda 风格的路由和处理

默认状况下,Spring Boot 2使用Netty WebFlux,由于Netty在异步非阻塞空间中被普遍使用,异步非阻塞链接能够节省更多的资源,提供更高的响应度。经过比较Servlet 3.1非阻塞I / O没有太多的使用,由于使用它的成本比较高,Spring WebFlux打开了一条实用的通路。

值得注意的是:支持reactive编程的数据库只有MongoDB, redis, Cassandra, Couchbase

2,HTTP/2

相比 HTTP/1.x,HTTP/2 在底层传输作了很大的改动和优化:

  • HTTP/2 采用二进制格式传输数据,而非 HTTP/1.x 的文本格式。二进制格式在协议的解析和优化扩展上带来更多的优点和可能。
  • HTTP/2 对消息头采用 HPACK 进行压缩传输,可以节省消息头占用的网络的流量。而 HTTP/1.x 每次请求,都会携带大量冗余头信息,浪费了不少带宽资源。头压缩可以很好的解决该问题。
  • 多路复用,直白的说就是全部的请求都是经过一个 TCP 链接并发完成。HTTP/1.x 虽然经过 pipeline 也能并发请求,可是多个请求之间的响应会被阻塞的,因此 pipeline 至今也没有被普及应用,而 HTTP/2 作到了真正的并发请求。同时,流还支持优先级和流量控制。
  • Server Push:服务端可以更快的把资源推送给客户端。例如服务端能够主动把 JS 和 CSS 文件推送给客户端,而不须要客户端解析 HTML 再发送这些请求。当客户端须要的时候,它已经在客户端了。

3,JOOQ

JOOQ 是基于Java访问关系型数据库的工具包。JOOQ 既吸收了传统ORM操做数据的简单性和安全性,又保留了原生sql的灵活性,它更像是介于 ORMS和JDBC的中间层。对于喜欢写sql的码农来讲,JOOQ能够彻底知足你控制欲,能够是用Java代码写出sql的感受来。

4,Lettuce

Lettuce是一个可伸缩的线程安全的Redis客户端,用于同步,异步和反应使用。 多个线程能够共享同一个RedisConnection。它利用优秀netty NIO框架来高效地管理多个链接。 支持先进的Redis功能,如Sentinel,集群,流水线,自动从新链接和Redis数据模型。

国内使用Jedis的居多,看来之后要多研究研究Lettuce了。

5,HikariCP

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

6,Flyway

Flyway是独立于数据库的应用、管理并跟踪数据库变动的数据库版本管理工具。用通俗的话讲,Flyway能够像SVN管理不一样人的代码那样,管理不一样人的sql脚本,从而作到数据库同步。

7,Gson

Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson等等

3、是否选择升级

若是想要升级也请先从早期的版本升级到Spring Boot1.5X系列以后,再升级到Spring Boot2.0版本,Spring Boot2.0的不少配置内容和Spring Boot1.0不一致须要注意。

相关文章
相关标签/搜索