Spring Boot 2.0详述

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 版权声明:本文为博主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可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
19天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
37 0
|
2月前
|
XML 监控 druid
【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程
【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程
|
3月前
|
Java
springboot项目打包瘦身
springboot项目打包瘦身
|
5月前
|
Java 测试技术
Springboot集成JUnit5优雅进行单元测试
Springboot集成JUnit5优雅进行单元测试
|
安全 Java Maven
Spring Boot资源文件问题总结(Spring Boot的静态资源访问,配置文件外置)
Spring Boot资源文件问题总结(Spring Boot的静态资源访问,配置文件外置)
1291 1
|
8月前
|
XML 安全 Java
SpEL(Spring表达语言)表达式详述
SpEL全称是Spring Expression Language是一种强大的表达式语言。在Spring产品组合中,它是表达式计算的基础。它支持在运行时查询和操作对象图,它可以与基于XML和基于注解的Spring配置还有bean定义一起使用。由于它能够在运行时动态分配值,因此可以为我们节省大量Java代码。
78 0
|
9月前
|
Java Maven
【Springboot】创建boot工程spring-boot-maven-plugin报红、出错_解决方案
【Springboot】创建boot工程spring-boot-maven-plugin报红、出错_解决方案
312 0
|
9月前
|
SQL druid 前端开发
让SpringBoot不需要Controller、Service、DAO、Mapper,卧槽!这款工具绝了!
让SpringBoot不需要Controller、Service、DAO、Mapper,卧槽!这款工具绝了!
|
11月前
|
Java C++ Spring
Spring Boot - ConfigDataEnvironmentPostProcessor(Boot 2.4)搞定配置文件加载优先级
Spring Boot - ConfigDataEnvironmentPostProcessor(Boot 2.4)搞定配置文件加载优先级
232 0
|
负载均衡 网络协议 Java
Spring Cloud Eureka 详述(一)(下)
Spring cloud eureka是Spring cloud netfilx中的一部分,它基于Netflix Eureka做了二次封装,主要职责完成Eureka 中的服务治理功能
57 0
Spring Cloud Eureka 详述(一)(下)