Spring Boot 2.0详述

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/79349439 Spring Boot 2.0详述2018.2.22版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/79349439

Spring Boot 2.0详述

  • 2018.2.22
  • 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。

Spring Boot 2.0即将发布,目前已经发布了v2.0.0 RC2版,据传说下周可能就会正式发布。Spring Boot 2.0有一系列重大的改变,下面将一一详述。

一、Spring Boot 2的基线变化

Java 8基线

Spring Boot 2.0需要Java 8以上版本为基础,它不再支持过时的Java 6和Java 7,这可以推动业内开发人员在开发基于Spring Framework的应用时能够充分利用Java 8/9提供的新特性。

支持Java 9

Spring Boot 2.0完全支持Java 9,并且提供了一个专门的网页来汇集Spring Boot with Java 9的相关知识和技巧,具体见:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-with-Java-9

Spring Framework 5.0

Spring Boot 2.0建立在Spring Framework 5.0之上。尽管Spring框架v5.0自2017年9月发布,但到目前为止,大多数基于Spring框架的项目都没有使用它。估计在Spring Boot 2.0GA版发布后,能快速推动Spring框架v5.0的使用吧。Spring框架v5.0引入了一些很好的改进,其中最值得注意的新特性之一就是它广泛支持构建响应式应用程序。

二、内嵌的Servlet容器

Spring Boot 2.0可以让应用程序内嵌Servlet容器,目前主要提供了三种Servlet容器,包括:Jetty、Tomcat、Undertow。其中,Jetty容器是9.4以上版本;Tomcat容器是8.5以上版本。

TLS配置

可以使用server.ssl.*配置属性为WebFlux应用程序配置SSL,并且这种配置方式对Tomcat、Jetty、Undertow和Reactor Netty等应用服务器均有效。

支持HTTP/2

Spring Boot 2.0应用程序还可以通过server.http2.enabled设置让MVC或WebFlux应用程序能够使用HTTP/2通信协议,并且这种配置方式对Tomcat、Jetty、Undertow应用服务器均有效。具体则依赖于选择的Web服务器和应用程序环境,因为HTTP/2协议不受JDK 8开箱即用的支持。

三、构建Build

Maven

Maven项目默认使用-parameters编译器标志进行编译。

Gradle

Spring Boot 2.0需要Gradle 4.x以上版本。Spring Boot的Gradle插件重写了大量内容,实现了许多重大改进。具体可以阅读:https://docs.spring.io/spring-boot/docs/2.0.0.BUILD-SNAPSHOT/gradle-plugin/reference

配置Gradle bootRun

BootRun任务提供了用于配置应用程序参数(args)和JVM参数(jvmArgs)的属性,以及通过execSpec提供了更高级的配置。详细情况可以阅读:https://docs.spring.io/spring-boot/docs/2.0.0.M5/gradle-plugin/reference/html/#running-your-application。根据用户的反馈,这个BootRun任务再次成为Gradle JavaExec任务的一个子类,它可以像任何其他JavaExec任务一样进行配置。

四、JDBC/ORM的变化

默认连接池

Spring Boot 2.0默认使用的连接池已从Tomcat的连接池更改为HikariCP。如果在提供的环境中使用Hikari,tomcat-jdbc包是provided,可以通过spring.datasource.type重写来移除它。同样,如果想要保留Tomcat连接池,只需将以下内容添加到应用的配置中即可:

spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource

数据库迁移

Liquibase和Flyway配置键被转移到了spring命名空间(即spring.liquibase和spring.flyway)。

Flyway/Liquibase的灵活配置

如果只提供了自定义url或user,auto-configuration会重用标准数据源属性而不是忽略它们。这使得可以针对迁移数据库的目的创建自定义的数据源DataSource。

数据源DataSource初始化的检测

如果你正在使用Flyway或Liquibase管理你的数据源的模式Schema,以及使用的是嵌入式数据库,Spring Boot 2.0将自动关闭Hibernate的自动DDL功能。

数据库初始化器

只有在使用嵌入式数据库时,应用程序的组件中出现了Spring Batch,Spring Integration,Spring Session或Quartz时,数据库初始化才会默认发生。其原先的enabled属性已被具有更多内容的枚举类型所取代。例如,如果想执行Spring Batch初始化,可以设置:

spring.batch.initialize-schema=always

数据源初始化

数据源DataSource的初始化仅针对嵌入式数据源启用的情况,并在应用程序使用生产数据库时立即关闭。此外,新的配置项spring.datasource.initialization-mode(替换原spring.datasource.initialize)提供了更多的控制。

数据源测量

Instrumentation负责监控所有可用的数据源并发布每个指标的度量标准(最小值,最大值和使用率)。

可配置的JPA映射资源

如果将Spring Boot的JPA配置扩展到注册映射资源,则有一个spring.jpa.mapping-resources属性。

JdbcTemplate

Spring Boot 2.0的auto-configuration可以通过spring.jdbc.template命名空间自定义JdbcTemplate。此外,NamedParameterJdbcTemplate自动配置的内容会重用JdbcTemplate。

jOOQ

Spring Boot 2.0可以根据数据源DataSource自动检测jOOQ方言(与JPA方言所做的相似)。此外,@JooqTest注释还引入了一个简化测试,但只供jOOQ使用。

Hibernate

Spring Boot 2.0支持的Hibernate的最低版本是5.2版。可以阅读Hibernate 5.2迁移指南以了解如何升级:https://github.com/hibernate/hibernate-orm/wiki/Migration-Guide—5.2

支持自定义Hibernate命名策略

对于高级场景,可以在上下文中定义ImplicitNamingStrategy或PhysicalNamingStrategy用作常规bean。

Hibernate属性自定义

可以通过暴露HibernatePropertiesCustomizer bean来提供更细粒度的方式自定义Hibernate的属性。

五、NoSQL

Cassandra

通过spring.data.cassandra暴露池选项。

支持响应式Couchbase

通过Spring Data响应式库可用于Couchbase,官方提供了一个spring-boot-starter-data-couchbase-reactive轻松上手指南。

InfluxDB

如果设置了InfluxDB的Java客户端和spring.influx.url,那么InfluxDB客户端会自动配置,也支持凭证。health终端可以监控InfluxDB服务器。

Redis缓存配置

可以暴露一个RedisCacheConfiguration来控制RedisCacheManager,同时引入了一个新的注释@DataRedisTest。

Elasticsearch

Spring Boot 2.0需要Elasticsearch 5.4以上版本。与Elastic宣布的嵌入式Elasticsearch不再受支持保持一致,原型的自动配置NodeClient已被删除。TransportClient 可以通过使用spring.data.elasticsearch.cluster-nodes提供要连接的一个或多个节点的地址来实现自动配置。

Mongo客户端自定义

通过定义一个MongoClientSettingsBuilderCustomizer类型的bean,Spring Boot的auto-configures可以将高级自定义应用于MongoDB客户端。

六、测试

Mockito 1.x

Spring Boot 2.0不再支持Mockito 1.x版的@MockBean和@SpyBean注释。如果不使用spring-boot-starter-test管理你的依赖,就应该升级到Mockito 2.x版。

TestRestTemplate的Kotlin扩展

Spring Boot 2.0提供了Kotlin的RestTemplate扩展,使开发者的体验保持一致。

测试改进

可以通过@WebMvcTest和@WebFluxTest注释自动扫描Converter Bean和GenericConverter Bean。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
6月前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
145 0
|
6月前
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
163 0
|
4天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
14 2
|
1月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
52 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
1月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
58 2
|
5月前
|
运维 Java 关系型数据库
Spring运维之boot项目bean属性的绑定读取与校验
Spring运维之boot项目bean属性的绑定读取与校验
53 2
|
5月前
|
存储 运维 Java
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
63 2
|
5月前
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
423 1
|
5月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
54 1
|
5月前
springboot2.4.5使用pagehelper分页插件
springboot2.4.5使用pagehelper分页插件
150 0