默认情况下,Spring Boot 2使用Netty WebFlux,因为Netty在异步非阻塞空间中被广泛使用,异步非阻塞连接可以节省更多的资源,提供更高的响应度。通过比较Servlet 3.1非阻塞I / O没有太多的使用,因为使用它的成本比较高,Spring WebFlux打开了一条实用的通路。
值得注意的是:支持reactive编程的数据库只有MongoDB, redis, Cassandra, Couchbase
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 再发送这些请求。当客户端需要的时候,它已经在客户端了。
JOOQ
JOOQ 是基于Java访问关系型数据库的工具包。JOOQ 既吸取了传统ORM操作数据的简单性和安全性,又保留了原生sql的灵活性,它更像是介于 ORMS和JDBC的中间层。对于喜欢写sql的码农来说,JOOQ可以完全满足你控制欲,可以是用Java代码写出sql的感觉来。
Lettuce
Lettuce是一个可伸缩的线程安全的Redis客户端,用于同步,异步和反应使用。 多个线程可以共享同一个RedisConnection。它利用优秀netty NIO框架来高效地管理多个连接。 支持先进的Redis功能,如Sentinel,集群,流水线,自动重新连接和Redis数据模型。
国内使用Jedis的居多,看来以后要多研究研究Lettuce了。
HikariCP
HikariCP是一个高性能的JDBC连接池。Hikari是日语“光”的意思。可能是目前java业界最快的数据库连接池。
Flyway
Flyway是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway可以像SVN管理不同人的代码那样,管理不同人的sql脚本,从而做到数据库同步。
Gson
Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson等等
看完 Spring Boot 2.0 Release Notes ,发现又有很多不知道的新技术了,以后有的学了
是否选择升级通过以上内容可以看出Spring Boot2.0相对于1.0增加了很多新特性,并且最重要的是Spring Boot2.0依赖的JDK最低版本是1.8,估计国内大多互联网公司还么这么激进。另外一个新的重大版本更新之后,难免会有一些小Bug什么的,往往需要再发布几个小版本之后,才会慢慢稳定下来。
因此我的建议是,如果不是特别想使用Spring Boot2.0上面提到的新特性,就尽量不要着急进行升级,等Spring Boot2.0彻底稳定下来后再使用。如果想要升级也请先从早期的版本升级到Spring Boot1.5X系列之后,再升级到Spring Boot2.0版本,Spring Boot2.0的很多配置内容和Spring Boot1.0不一致需要注意。
Spring Boot1.0发布之后给我们带来了全新的开发模式,Spring Boot2.0发布标志着Spring Boot已经走向成熟,对Java界带来的变革已经开启!
写在最后前两天在看池建强老师文章时,发现老师刚好也介绍了Spring Boot2.0,其中有这么一个观点:Java 语言为什么能够长期占据编程兵器排行榜第一名的位置呢?因为命好。
Java 能长盛不衰,主要是命好。每当人们觉得 Java 不行了的时候,总会有英雄横刀救美。
最初 Java 开发出来不知道有什么用的时候,发现可以用 Applet 在网页上做动画。后来企业级软件开发时代 JavaEE 大行其道,开源社区 Spring 桃李满天下。等到了移动时代,人们觉得 Java 要完蛋了,Google 拍马救市,收购并开放了 Android 平台,当家语言就是 Java,于是 Java 再次焕发勃勃生机。目前大数据领域,Java 同样是当仁不让的好手。
现在 Spring Framework 那套东西使用了十几年,正当大家被长达几千行的 ApplicationContext 配置文件折磨的死去活来的时候,Spring Boot 诞生了。什么是 Spring Boot?用来简化 Spring 应用程序开发的。