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不一致須要注意。

相關文章
相關標籤/搜索