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)編著。

總結


分享到:


相關文章: