Spring Boot2.0.0.RELEASE
正式發佈,在發佈Spring Boot2.0的時候還出現一個小插曲,將Spring Boot2.0同步到Maven倉庫的時候出現了錯誤,而後Spring Boot官方又趕忙把 GitHub 上發佈的 v2.0.0.RELEASE 版本進行了撤回。到了下午將問題修復後,又從新進行了上傳,至此Spring Boot2.0正式推出!java
要知道這是Spring Boot1.0發佈4年以後第一次重大修訂,所以有多的新功能和特性值得你們期待!在Spring Boot官方博客中咱們瞭解到:Spring Boot2.0版本經歷了 17 個月的開發,有 215 個不一樣的使用者提供了超過 6800 次的提交,並表示很是感謝提供貢獻的每一位用戶,和全部對這些里程碑版本提供重要反饋的早期採用者。react
熟悉Spring Boot/Cloud的技術者們都知道,Spring Boot依賴於Spring,而Spring Cloud又依賴於Spring Boot,所以Spring Boot2.0的發佈正式整合了Spring5.0的不少特性,一樣後面Spring Cloud最新版本的發佈也須要整合最新的Spring Boot2.0內容。git
新版本值得關注的亮點有哪些:github
基於 Java 8,支持 Java 9web
也就是說Spring Boot2.0的最低版本要求爲JDK8,據瞭解國內大部分的互聯網公司系統都還跑在JDK1.6/7上,所以想要升級到Spring Boot2.0的同窗們注意啦,同時支持了Java9,也僅僅是支持而已。redis
響應式編程spring
使用 Spring WebFlux/WebFlux.fn提供響應式 Web 編程支持, Webflux 是一個全新的非堵塞的函數式 Reactive Web 框架,能夠用來構建異步的、非堵塞的、事件驅動的服務,在伸縮性方面表現很是好,此功能來源於Spring5.0。sql
Spring Boot2.0也提供對響應式編程的自動化配置,如:Reactive Spring Data、Reactive Spring Security 等數據庫
HTTP/2支持編程
在Tomcat, Undertow 和 Jetty 中均已支持 HTTP/2
對Kotlin支持
引入對 Kotlin 1.2.x 的支持,並提供了一個 runApplication 函數,讓你經過慣用的 Kotlin 來運行 Spring Boot 應用程序。
全新的執行器架構
全新的執行器架構,支持 Spring MVC, WebFlux 和 Jersey
支持 Quartz
Spring Boot1.0並無提供對 Quartz 的支持,以前出現了各類集成方案,Spring Boot2.0給出了最簡單的集成方式。
Security
大大的簡化了安全自動配置
Metrics
Metrics方面,Spring Boot 2引入了Micrometer,來統一metrics的規範,使得開發人員更好的理解和使用metrics的模塊,而不須要關心對接的具體存儲是什麼。
監控方面
Spring Boot 2 加強了對 Micrometer 的集成。RabbitMQ、JVM 線程和垃圾收集指標會自動進行 instrument 監控,異步控制器(controller)也會自動添加到監控裏。經過集成,還能夠對 InfluxDB 服務器進行監控。
數據方面
Thymeleaf 3
Spring Boot 2支持了Thymeleaf 3,Thymeleaf 3相對於Thymeleaf 2性能提高可不是一點點,由於2.0的性能確實不咋地,同時也使用了新的頁面解析系統。
OAuth 2.0
同時也加入了 對於OAuth 2.0的支持, 使得開發人員更加友好的使用spring-security來完成權限模塊的開發
依賴組件的更新
最後還有一個小彩蛋,Spring Boot2.0支持了動態gif的啓動logo打印.
Spring 如今做爲Java開源界的老大,它的一舉一動都影響着行業的技術方向,在此次發佈的 Release Notes中發現有不少的技術都尚未了解過,也分享出來:
WebFlux 是什麼?
WebFlux 模塊的名稱是 spring-webflux,名稱中的 Flux 來源於 Reactor 中的類 Flux。Spring webflux 有一個全新的非堵塞的函數式 Reactive Web 框架,能夠用來構建異步的、非堵塞的、事件驅動的服務,在伸縮性方面表現很是好。
非阻塞的關鍵預期好處是可以以小的固定數量的線程和較少的內存進行擴展。在服務器端 WebFlux 支持2種不一樣的編程模型:
默認狀況下,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 在底層傳輸作了很大的改動和優化:
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 應用程序開發的。
換句話說就是,當你以爲 Java 很差用的時候,我作了個輕量級的 S,讓你好好用 Java。等你覺的 S 也不夠輕了,我作了個 SB,讓你以爲 S 仍是挺輕的。
從2002年Rod Johnson的interface21
到現在的Spring Boot2.0
,Spring 走過了16年的春秋,經歷了N多的貢獻者,Spring 也從一個小小的開源框架,發展成Java領域最成功的開源軟件沒有之一!同時作爲一名Java開發從業者,也特別的感謝Spring這類的開源組織,爲推進企業級開發作了巨大的貢獻,全世界的Java開發者都是它的受益者!
向Spring致敬,向開源致敬!
Spring Boot 2.0 Release Notes
Spring Boot 2.0 goes GA
Spring Boot 2.0 同步至 Maven 倉庫出錯,已撤回……