首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

186.Spring Boot 2.0发布:番外篇

【视频&交流平台】

àSpring Boot视频

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

àSpring Cloud视频

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 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包下。

具体怎么玩转jdk1.8,此博客就不详细展开了。

关于1.8的特性了解可以参考:

《写给大忙人看的Java SE8》——Java8新特性总结:

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

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

画外音: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版本的是会报错的,3.0之后就可以正常访问了。(博主这个特性特意测试了下,通过)。

画外音:在Thymeleaf 3版本中,标签没有闭合也是可以正常运行了。

另外一些特性,在《77. Spring Boot Use Thymeleaf 3【从零开始学Spring Boot】》博客中也有略微提及,大家看这篇博客进行了解,这里就过多介绍了。

三、Quartz支持

还记得之前的博客,在集成Quartz花费了不少功夫呢,现在好了,spring boot就直接支持了,只要添加如下依赖:

spring-boot-starter-quartz

之后就可以享受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的话,会注明所使用的版本号。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180324B0D20H00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券