【視頻&交流平臺】
http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share
http://study.163.com/course/introduction.htm?courseId=1004638001&utm_campaign=commission&utm_source=400000000155061&utm_medium=share
https://gitee.com/happyangellxq520/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.0:Quartz
1、Spring Boot2.0 新特性
2、Spring Boot 2.0小彩蛋 :動態 banner
3、Spring Boot 2.0 quartz:hello world
4、Spring Boot 2.0 quartz:job data property和inject service
5、Spring Boot 2.0 quartz:Job持久化
第二十章 Spring Boot 2.0:Quartz持久化:動態任務管理
1、Spring Boot 2.0 quartz:任務動態管理-添加
2、Spring Boot 2.0 quartz:任務動態管理-刪除
3、Spring Boot 2.0 quartz:任務動態管理-修改
4、Spring Boot 2.0 quartz:任務動態管理-啓動停止所有任務
戳下【傳送門】看視頻(悟纖感恩節)….