`

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动态,当前已经更新到:188. Spring Boot 2.0 quartz :回顾 、187. Spring Boot 2.0小彩蛋 :动态 banner

 

需求缘起:

       在上一周发布了文章《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的话,会注明所使用的版本号。

 

 

 

分享到:
评论

相关推荐

    2018.02.Spring Boot 2.0 Cookbook 2nd

    《2018.02.Spring Boot 2.0 Cookbook 2nd》是一本专注于Spring Boot 2.0开发的实战指南,旨在帮助开发者更好地理解和应用这一强大的Java框架。Spring Boot以其快速启动、简化配置以及丰富的生态系统,在企业级开发中...

    Packt.Spring.Boot.2.0.Cookbook.2nd.Edition.

    Packt.Spring.Boot.2.0.Cookbook.2nd.Edition. Packt.Spring.Boot.2.0.Cookbook.2nd.Edition.

    learning spring boot 2.0

    第二版的发布表明作者在原有基础上增加了更多关于Spring Boot 2.0的新特性介绍和使用指导。 描述中提到本书是英文高清版,2017年11月出版,属于第二版。由于本书的出版时间相对较新,因此其中关于Spring Boot的知识...

    Learning Spring Boot 2.0 - Second Edition (mobi) English version

    英文原版第二版,Spring Boot 2.0 by Greg L. Turnquist (Author) Key Features Get up to date with the defining characteristics of Spring Boot 2.0 in Spring Framework 5 Learn to perform Reactive ...

    Learning Spring boot 2.0

    《Learning Spring Boot 2.0》是一本专为开发者设计的深入指南,旨在帮助读者全面理解和掌握Spring Boot 2.0这一强大框架。Spring Boot以其快速启动、简化配置和易于开发的特点,在Java企业级应用开发中占据着重要的...

    Learning Spring Boot 2.0 Second Edition

    《Learning Spring Boot 2.0 Second Edition》是学习Spring Boot 2.0的重要参考资料,它深入浅出地介绍了这个流行的Java开发框架的核心概念和技术。Spring Boot简化了Spring应用程序的初始搭建以及开发过程,旨在...

    spring-boot-configuration-processor-2.3.12.RELEASE-API文档-中文版.zip

    赠送jar包:spring-boot-configuration-processor-2.3.12.RELEASE.jar; 赠送原API文档:spring-boot-configuration-processor-2.3.12.RELEASE-javadoc.jar; 赠送源代码:spring-boot-configuration-processor-...

    Spring Boot 学习笔记完整教程.pdf

    Spring Boot是一种旨在简化新Spring应用的初始搭建以及开发过程的框架。它使用了特定的方式来配置Spring,使得开发者不必再进行繁琐的配置工作。Spring Boot的核心思想包括自动配置和starters,这让创建独立的、生产...

    Spring Boot 2.0深度实践之核心技术篇

    《Spring Boot 2.0深度实践之核心技术篇》是一份深入探索Spring Boot 2.0核心功能和技术的教程,旨在帮助开发者充分利用这个流行的Java开发框架,提升开发效率和项目质量。Spring Boot以其“开箱即用”的特性,简化...

    spring-boot-test-2.2.8.RELEASE-API文档-中文版.zip

    赠送jar包:spring-boot-test-2.2.8.RELEASE.jar; 赠送原API文档:spring-boot-test-2.2.8.RELEASE-javadoc.jar; 赠送源代码:spring-boot-test-2.2.8.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-boot-...

    spring-boot-autoconfigure-2.5.5-API文档-中文版.zip

    赠送jar包:spring-boot-autoconfigure-2.5.5.jar; 赠送原API文档:spring-boot-autoconfigure-2.5.5-javadoc.jar; 赠送源代码:spring-boot-autoconfigure-2.5.5-sources.jar; 赠送Maven依赖信息文件:spring-...

    spring-boot-autoconfigure-2.6.3-API文档-中文版.zip

    赠送jar包:spring-boot-autoconfigure-2.6.3.jar; 赠送原API文档:spring-boot-autoconfigure-2.6.3-javadoc.jar; 赠送源代码:spring-boot-autoconfigure-2.6.3-sources.jar; 赠送Maven依赖信息文件:spring-...

    《Learning Spring Boot 2.0》高清版

    《Learning Spring Boot 2.0》是一本专为Java开发者设计的高级教程,全面深入地讲解了Spring Boot 2.0这一强大框架的各个方面。Spring Boot简化了Java应用程序的初始设置和配置,使得开发人员可以更快地专注于业务...

    Spring Boot 2.0官方参考文档

    ### Spring Boot 2.0官方参考文档知识点梳理 #### 一、Spring Boot 2.0简介与系统需求 - **Spring Boot**是一个基于Spring框架的全新子项目,它旨在简化新Spring应用的初始搭建以及开发过程。该版本为2.0.0.BUILD-...

    spring-boot2.0-中文参考指南

    Spring Boot 2.0是Java开发领域中备受瞩目的框架更新,它极大地简化了Spring应用程序的创建、配置和管理过程。这个中文参考指南是开发者掌握Spring Boot 2.0核心特性和最佳实践的重要资源。 Spring Boot的核心理念...

    about learning Spring Boot. Spring Boot 教程、技术栈示例代码,快速简单上手教程.zip

    Spring Boot 2.0 Mysql 5.6 JDK 1.8 Maven license Spring Boot 使用的各种示例,以最简单、最实用为标准,此开源项目中的每个示例都以最小依赖,最简单为标准,帮助初学者快速掌握 Spring Boot 各组件的使用。 本...

    spring-boot-autoconfigure-2.3.12.RELEASE-API文档-中文版.zip

    赠送jar包:spring-boot-autoconfigure-2.3.12.RELEASE.jar; 赠送原API文档:spring-boot-autoconfigure-2.3.12.RELEASE-javadoc.jar; 赠送源代码:spring-boot-autoconfigure-2.3.12.RELEASE-sources.jar; 赠送...

    Spring-Boot-Reference-Guide-v2.1.6.RELEASE.pdf

    根据提供的文件内容,以下是一些关于Spring Boot的知识点: 1. Spring Boot官方文档版本:文档所描述的版本是V2.1.6.RELEASE,这是一个稳定的发行版,为Java开发者提供了一个快速开发Spring应用程序的平台。 2. ...

Global site tag (gtag.js) - Google Analytics