2018.3月Spring Boot2.0发布,是Spring Boot1.0发布4年之后第一次重大修订。Spring Boot2.0版本经历了 17 个月的开发,有 215 个不同的使用者提供了超过 6800 次的提交。

新版本值得关注的亮点有哪些:

基于 Java 8,Spring5.0

也就是说Spring Boot2.0的最低版本要求为JDK8,同时支持了Java9。

基于Spring5.0实现响应式编程。使用 Spring WebFlux/WebFlux.fn提供响应式 Web 编程支持, Webflux 是一个全新的非堵塞的函数式 Reactive Web 框架,可以用来构建异步的、非堵塞的、事件驱动的服务,在伸缩性方面表现非常好。

Spring Boot2.0也提供对响应式编程的自动化配置,如:Reactive Spring Data、Reactive Spring Security 等

HTTP/2支持

在Tomcat, Undertow 和 Jetty 中均已支持 HTTP/2

对Kotlin支持

引入对 Kotlin 1.2.x 的支持,并提供了一个 runApplication 函数,让你通过惯用的 Kotlin 来运行 Spring Boot 应用程序。

全新的执行器架构

全新的执行器架构,支持 Spring MVC, WebFlux 和 Jersey

支持 Quartz

Spring Boot1.0并没有提供对 Quartz 的支持,之前出现了各种集成方案,Spring Boot2.0给出了最简单的集成方式。

Security

大大的简化了安全自动配置

Metrics

Metrics方面,Spring Boot 2引入了Micrometer,来统一metrics的规范,使得开发人员更好的理解和使用metrics的模块,而不需要关心对接的具体存储是什么。

监控方面

Spring Boot 2 增强了对 Micrometer 的集成。RabbitMQ、JVM 线程和垃圾收集指标会自动进行 instrument 监控,异步控制器(controller)也会自动添加到监控里。通过集成,还可以对 InfluxDB 服务器进行监控。

数据方面

  • db方面,默认引入了HikariCP,替代了之前的tomcat-pool作为底层的数据库连接池, 对比于tomcat-pool, HikariCP拥有更好的性能,总而言之就是提高了db的访问速度
  • JOOQ的支持
  • Redis方面, 默认引入了Lettuce, 替代了之前的jedis作为底层的redis链接方式
  • MongoDB\Hibernate优化

Thymeleaf 3

Spring Boot 2支持了Thymeleaf 3,Thymeleaf 3相对于Thymeleaf 2性能提升可不是一点点,因为2.0的性能确实不咋地,同时也使用了新的页面解析系统。

OAuth 2.0

同时也加入了 对于OAuth 2.0的支持, 使得开发人员更加友好的使用spring-security来完成权限模块的开发

依赖组件的更新

  • Jetty 9.4
  • Tomcat 8.5
  • Flyway 5
  • Hibernate 5.2
  • Gradle 3.4
  • Thymeleaf 3.0

迁移注意事项:

在 Spring Boot 2.0 中,许多配置属性被重新命名/删除,开发人员需要更新application.propertiesapplication.yml相应的配置。为了帮助你解决这一问题,Spring Boot 发布了一个新spring-boot-properties-migrator模块。一旦作为该模块作为依赖被添加到你的项目中,它不仅会分析应用程序的环境,而且还会在启动时打印诊断信息,而且还会在运行时为您暂时迁移属性。在您的应用程序迁移期间,这个模块是必备的:

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-properties-migrator</artifactId>
</dependency>

注意:完成迁移后,请确保从项目的依赖关系中删除此模块。

SpringBoot GitHub地址:https://github.com/spring-projects/spring-boot
SpringBoot 官方文档: https://spring.io/guides/gs/spring-boot/

SpringBoot2的更多相关文章

  1. SpringBoot2.x开发案例之整合Quartz任务管理系统

    基于spring-boot 2.x + quartz 的CRUD任务管理系统,适用于中小项目. 基于spring-boot +quartz 的CRUD任务管理系统: https://gitee.com ...

  2. springboot2 webflux 响应式编程学习路径

    springboot2 已经发布,其中最亮眼的非webflux响应式编程莫属了!响应式的weblfux可以支持高吞吐量,意味着使用相同的资源可以处理更加多的请求,毫无疑问将会成为未来技术的趋势,是必学 ...

  3. (六)SpringBoot2.0基础篇- Redis整合(JedisCluster集群连接)

    一.环境 Redis:4.0.9 SpringBoot:2.0.1 Redis安装:Linux(Redhat)安装Redis 二.SpringBoot整合Redis 1.项目基本搭建: 我们基于(五) ...

  4. Springboot2.0(Spring5.0)中个性化配置项目上的细节差异

    在一般的项目中,如果Spring Boot提供的Sping MVC不符合要求,则可以通过一个配置类(@Configuration)加上@EnableWebMvc注解来实现完全自己控制的MVC配置.但此 ...

  5. Springboot2新特性概述

    官方说明: https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Release-Notes 起码 JDK 8 和支持 ...

  6. springboot2.0.3源码篇 - 自动配置的实现,发现也不是那么复杂

    前言 开心一刻 女儿: “妈妈,你这么漂亮,当年怎么嫁给了爸爸呢?” 妈妈: “当年你爸不是穷嘛!‘ 女儿: “穷你还嫁给他!” 妈妈: “那时候刚刚毕业参加工作,领导对我说,他是我的扶贫对象,我年轻 ...

  7. spring-boot-2.0.3源码篇 - pageHelper分页,绝对有值得你看的地方

    前言 开心一刻 说实话,作为一个宅男,每次被淘宝上的雄性店主追着喊亲,亲,亲,这感觉真是恶心透顶,好像被强吻一样.........更烦的是我每次为了省钱,还得用个女号,跟那些店主说:“哥哥包邮嘛么叽. ...

  8. Activiti(二) springBoot2集成activiti,集成activiti在线设计器

    摘要 本篇随笔主要记录springBoot2集成activiti流程引擎,并且嵌入activiti的在线设计器,可以通过浏览器直接编辑出我们需要的流程,不需要通过eclipse或者IDEA的actiB ...

  9. SpringBoot2.0之四 简单整合MyBatis

    从最开始的SSH(Struts+Spring+Hibernate),到后来的SMM(SpringMVC+Spring+MyBatis),到目前的S(SpringBoot),随着框架的不断更新换代,也为 ...

  10. springBoot2.0+redis+fastJson+自定义注解实现方法上添加过期时间

    springBoot2.0集成redis实例 一.首先引入项目依赖的maven jar包,主要包括 spring-boot-starter-data-redis包,这个再springBoot2.0之前 ...

随机推荐

  1. java中String的认识

    String不是Java的基本数据类型.String类是final类,故不可继承. String 和 StringBuffer之间的区别非常大,Java平台提供了两个类,两者都是包含多个字符的的字符数 ...

  2. python第一个程序HelloWorld

    在写第一个python程序之前,我们还需要了解的一个东西就是python解释器 解释器,顾名思义,就是解释一段代码的机器,程序运行的平台,例如Java的解释器就是jdk. 我们在写好的python代码 ...

  3. C#清理所有正在使用的资源

    namespace QQFrm{    partial class Form1    {        /// <summary>        /// 必需的设计器变量.        ...

  4. 2019-03-18-day013-装饰器与内置函数

    上周回顾 函数: def 函数名(): 缩进 函数体 闭包: a = 50 def func(): a = 10 def avg(): print(a) 函数名的使用: 当做值被赋值给变量 当做返回值 ...

  5. java学习笔记12(final ,static修饰符)

    final: 意思是最终的,是一个修饰符,有时候一个功能类被开发好了,不想被子类重写就用final定义, 用final修饰的最终数据成员:如果一个类的数据成员用final修饰符修饰,则这个数据成员就被 ...

  6. 12.输入一个成绩计算其A,B,C,D,E等级

    #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int score; s ...

  7. puppet替换文件中的string

    文件 <VirtualHost :80> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.) https://%{SERVE ...

  8. 2--Jmeter 4.0--Excel 数据驱动 接口测试

    Excel 模板 通过jmeter的csv data set config 读取 Jmeter注意事项 (1)数据驱动 1..JDBC :SQL 存储在excel中,无法将where条件对应的jmet ...

  9. Scrum_Sprint

    1.计划会议过程 经过一天的讨论研究,我们对该项目进行了需求分析,确定了这周所要实现的各个功能 并做好了任务看板,并将项目的各个功能分成一个个任务,进行了初步的分工 2.backlog BACKLOG ...

  10. Python中的分支结构和循环结构

    一.分支结构 语法: if  条件  :     .... else :    .... 例子: num = int(input("输入一个整数:")) if num<=10 ...