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:任务动态管理-启动停止所有任务

戳下【传送门】看视频悟纤感恩节.


阅读更多

没有更多推荐了,返回首页