Spring Boot 2.0详述

2018-02-27 11:44:21来源:http://blog.csdn.net/chszs/article/details/79349439作者:chszs的专栏人点击

分享
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的相关知识和技巧,具体见:/2014th7cj/d/file/p/20180223/wiki 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提供了更高级的配置。详细情况可以阅读:/2014th7cj/d/file/p/20180223/ 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迁移指南以了解如何升级:/2014th7cj/d/file/p/20180223/wiki 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。


最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台