186. Spring Boot 2.0發佈:番外篇

 

【視頻&交流平臺】

à SpringBoot視頻

http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

à SpringCloud視頻

http://study.163.com/course/introduction.htm?courseId=1004638001&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

à Spring Boot源碼

https://gitee.com/happyangellxq520/spring-boot

à Spring Boot交流平臺

http://412887952-qq-com.iteye.com/blog/2321532

 

關注spring boot微信公衆號,第一時間瞭解最新的spring boot動態,當前已經更新到:191. Spring Boot 2.0 quartz :Job持久化 、190. Spring Boot 2.0 quartz :job data property和inject service



悟纖感恩節:

       從零開始學Spring Boot》發佈的第一篇文章是2016年4月15日,算算到目前爲止已經兩年了,遇見Spring Boot,遇見了你們,一直關注和支持我的小夥伴們,真心的感謝你們。

       4月15號,是特殊的一天,是我遇見SpringBoot的一天,是我遇見大家的一天,在這一天,我要感恩一切,感恩大家,所以我決定把這一天作爲一個節日:<悟纖感恩節>

       古有情人節,感恩情人的陪伴;今有悟纖感恩節,感恩小夥伴們的支持

親愛的各位小夥伴:

今天我要在這裏向大家表示我對你們的謝意。你們長期陪伴我,如果沒有你們,我還不知道是否可以堅持到現在。是你們的支持,是你們的陪伴,讓我能堅持了下來。

還記得由於博主糟糕的排版,被吐槽了幾次,感謝你們指出,我自己在看看之前的排版,確實是忍無可忍… 我都想批評我自己了…. 正是大家對於排版提出了吐槽,博主還能對於排版得以重視。感謝你們的不吝指出。過往的事情太多,太多了,謝謝你們的包容…..

在今天這個特殊的日子裏,我祝願大家身體健康、工作順利、闔家幸福。你就是你,不一樣的小螞蟻!

 

 

需求緣起:

       在上一週發佈了文章《Spring Boot 2.0終於正式發佈》,但是看完總感覺少了點什麼。^_^,是少加糖了,沒甜到你心裏去,好了,希望本篇文章可以走進你心裏去,知道2.0到底可以給我帶來什麼。接下來就是見證奇蹟的時刻了:

 

一、JDK的版本

       Spring Boot 2.0要求Java 8作爲最低版本,同時支持Java 9 。

畫外音:要想升級到Spring Boot 2.0的化,就要升級jdk到1.8的版本了,不然可能就無法正常運行了,另外就是升級到jdk 1.8的話,那麼就可以享受1.8帶來的特性了。

       那麼對於1.8和1.9的java給我們帶來什麼新特性呢?

 

1.1 JDK1.8的新特性

       這裏簡單說明幾點:

(1)接口中支持默認方法和靜態方法

 

在jdk1.8之前,在接口中的方法都是抽象無法,是不允許有實現了,jdk1.8就支持實現了。

(2)函數式接口和Lambda表達式

函數式接口(Functional Interface)是只包含一個方法的抽象接口。

在Java 8中通過@FunctionalInterface註解,將一個接口標註爲函數式接口,該接口只能包含一個抽象方法。

@FunctionalInterface註解不是必須的,只要接口只包含一個抽象方法,虛擬機會自動判斷該接口爲函數式接口。一般建議在接口上使用@FunctionalInterface註解進行聲明,以免他人錯誤地往接口中添加新方法,如果在你的接口中定義了第二個抽象方法的話,編譯器會報錯。函數式接口是爲Java 8中的lambda而設計的,lambda表達式的方法體其實就是函數接口的實現。

       “lambda表達式”是一段可以傳遞的代碼,因爲他可以被執行一次或多次。

(3)StreamAPI

Stream是數據渠道,用於操作數據源(集合、數組等)所生成的元素序列。可以指定你希望對 集合進行的操作,可以執行非常複雜的查找、過濾和映射數據等操作。

(4)新的日期和時間 API

Java8 引入了一個新的日期和時間API,位於java.time包下。

Java8中有兩大最爲重要的改變。第一個是 Lambda 表達式 ;另外一 個則是Stream API(java.util.stream.*)

       具體怎麼玩轉jdk1.8,此博客就不詳細展開了。

       關於1.8的特性瞭解可以參考:

《寫給大忙人看的Java SE8》——Java8新特性總結:

https://www.cnblogs.com/justcooooode/p/7701260.html

JAVA8新特性[第四季]-強大的Stream API:

http://blog.csdn.net/liudongdong0909/article/details/77429875

 

畫外音:spring boot 2.0最低版本使用的是jdk 1.8的,那麼也就是你可以使用jdk 1.8的新特性來改進和優化你的代碼了。

 

1.2 JDK1.9的新特性

       Jdk1.9看起來也是做了很大的升級,這裏不展開說明,^_^,博主1.8還沒玩明白呢,要想了解1.9新特性的可以參考:

Java 9 逆天的十大新特性:

http://blog.csdn.net/mxw2552261/article/details/79080678

二、第三方庫升級

SpringBoot 2.0建立在Spring Framework 5之上,升級第三方庫到最新的穩定版本,比如:Tomcat 8.5、Flyway 5、Hibernate 5.2、Thymeleaf 3。

這裏我們說明下Thymeleaf3:

(1)Thymeleaf3是否是spring boot 2.0才支持的

       非也,非也,在spring boot 1.4的版本升級中,有這麼一段話:

By default, Spring Boot uses Thymeleaf2.1 but it is now compatible with Thymeleaf 3 as well, check the updateddocumentation for more details.

       意思就是:默認情況下,Spring Boot使用的是Thymeleaf 2.1的版本,但是現在也能夠兼容Thymeleaf 3的版本了。

畫外音:spring boot在1.4的時候就兼容了Thymeaf 的版本,只是默認情況下使用的是2.1的版本而已。

       對於使用的是1.x的版本的,如果要使用Thymeaf的話,那麼可以參考之前的一篇博客,《77. Spring Boot Use Thymeleaf 3【從零開始學SpringBoot】》:

http://412887952-qq-com.iteye.com/blog/2315193

畫外音:在spring boot 1.4以上,spring boot 2.0以下,如果要使用Thymeaf 3的需要簡單的配置才能支持;如果是spring boot 2.0的版本的話,只需要引入相應的starter即可支持了。

 

(2)Thymeleaf3的特性

       這裏重要說一點的是,完整HTML5標誌支持:Thymeleaf3.0 不再是基於XML結構的。由於引入新的解析引擎,模板的內容格式不再需要嚴格遵守XML規範。即不在要求標籤閉合,屬性加引號等等。當然,出於易讀性考慮,還是推薦你按找XML的標準去編寫模板。2.0版本的<hr>是會報錯的,3.0之後<hr>就可以正常訪問了。(博主這個特性特意測試了下,通過)。

畫外音:在Thymeleaf 3版本中,標籤沒有閉合也是可以正常運行了。

       另外一些特性,在《77. Spring Boot Use Thymeleaf 3【從零開始學Spring Boot】》博客中也有略微提及,大家看這篇博客進行了解,這裏就過多介紹了。

 

三、Quartz支持

       還記得之前的博客,在集成Quartz花費了不少功夫呢,現在好了,spring boot就直接支持了,只要添加如下依賴:

   <dependency> 

         <groupId>org.springframework.boot</groupId> 

         <artifactId>spring-boot-starter-quartz</artifactId> 

</dependency> 

       之後就可以享受quartz帶來的功能了。自從了quartz,媽媽在也不擔心,我不能按時回家吃飯了。

 

四、響應式編程

       爲各種組件的響應式編程提供了自動化配置,如:Reactive Spring Data、Reactive Spring Security。那麼什麼是響應式編程呢?

       響應式編程(Reactive Programming),簡稱RP:響應式編程就是異步數據流編程。什麼是流呢?任何事物都可以當做給一個流:變量、用戶輸入、屬性、緩存,數據結構等。有點像Java中對象的定義:萬事萬物皆是對象。比如,系統中的添加文章就是一個單擊事件一樣的數據流,你能夠監聽這個流,並做出響應。

       具體這塊的概念性的東西比較複雜,一方面大家可以找點資料瞭解下,另外一方面如果允許的話,也會在之後的博客中進行介紹。

       對於Spring Boot 2.0的新特性,還有很多,這裏介紹的是重要的部分,也是可能和大家比較有關聯的地方。

 

問題一:升級到Spring Boot 2.0

       對於要從Spring Boot 1.x升級到SpringBoot 2.0的話,官方是建議先升級到Spring Boot 1.5的版本,然後再升級到2.0的版本。對於是否要升級到2.0的話,還是要看當下的項目,當下已經在線上的項目,如果未使用2.0的特性的話,是可以保留在1.x的版本的。對於如果是新的項目,建議還是升級到2.0版本,因爲這裏不僅使用了jdk 1.8,而且還有這麼多特性,這樣有助於之後版本的升級。

 

問題二: 學習Spring Boot

       對於很多新手而言的話,對於Spring Boot還是不是很瞭解的,另外現在大部分的文章都是使用1.x的版本,那麼對於初學者的話,是選擇2.0學習,還是1.x的學習呢?這裏建議:如果能夠自行學習的,可以直接選擇2.0版本進行學習,如果確實有困難的,選擇1.x的進行學習。對於使用1.x學習的,學習好之後,過渡到2.0版本是很輕鬆簡單的事情。因爲通過這兩篇文章的介紹,Spring Boot 2.0並不是徹底改了編碼方式,只是進行升級和優化而已,所以不用擔心,學習了1.x版本之後,2.0還得重新瞭解一遍。這是一些小建議而已,具體根據自己的情況進行學習。

 

問題三: 博主寫博客會使用哪個版本?

       目前博客中會使用Spring Boot 1.5的版本和Spring Boot 2.0的版本進行講解,對於Spring Boot 2.0的話,之後會介紹新特性;對於1.5的版本在寫一些文章的時候,會使用此版本,具體會根據實際情況,進行選擇合適的版本進行說明,在每篇文章中,如果使用到了Spring Boot的話,會註明所使用的版本號。

 



Quartz視頻集

第十九章 Spring Boot 2.0Quartz
1、Spring Boot2.0 新特性
2、Spring Boot 2.0小彩蛋 :動態 banner
3、Spring Boot 2.0 quartzhello world
4、Spring Boot 2.0 quartzjob data propertyinject service
5、Spring Boot 2.0 quartzJob持久化

第二十章 Spring Boot 2.0Quartz持久化:動態任務管理
1、Spring Boot 2.0 quartz:任務動態管理-添加
2、Spring Boot 2.0 quartz:任務動態管理-刪除
3、Spring Boot 2.0 quartz:任務動態管理-修改
4、Spring Boot 2.0 quartz:任務動態管理-啓動停止所有任務

戳下【傳送門】看視頻悟纖感恩節.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章