转载至微信公众号 SpringForAll社区
最低 Java 8
发布一个新的主要版本给了 Spring 团队有机会重新编译基于 Java 8 的代码库并使用其新功能。因此,Spring Boot 2.0 需要 Java 8 或更高版本,它不再支持Java 6 和 Java 7,因为它们已经达到了生命的尽头。
支持 Java 9
Spring Boot 2 完全支持 Java 9,如果你想用 Java 9 运行 Spring Boot 应用程序,请看 Spring Boot with Java 9 .
Spring Framework 5.0
Spring Boot 2.0 的构建需要 Spring Framework 5.0。尽管 Spring 5 自2017 年 9 月开始普遍上市,但大多数项目可能会在 Spring Boot 2.0 正式发布时开始采用它。Spring 5 引入了一些很好的改进,其中最值得注意的新功能之一是 Reactive Stack。
内嵌的 Servlet 容器
Jetty:最低版本 9.4
Tomcat:最低版本 8.5
TLS 配置
可以使用 server.ssl.*
属性为你的 WebFlux 应用 配置 SSL,Tomcat、 Jetty、Undertow 和 Reactor Netty 都支持此配置。
支持 HTTP/2
Spring Boot 还可以让你的 MVC 或 WebFlux 应用通过设置 server.http2.enabled
来使用 HTTP/2。它支持 Tomcat、Undertow 和 Jetty。这取决于所选的服务器、JDK 及其他条件。
文档: Spring Boot 配置 HTTP2
构建
Maven:Maven 项目默认使用 -parameters
编译器标志进行编译。
Gradle:Spring Boot 需要 Gradle 4.x. Spring Boot Gradle 插件,它已经在很大程度上被重写,以实现许多重大改进许多重大改进。你可以在其 参考文献 和 API文档 中阅读关于插件功能的更多信息。
配置 Gradle BootRun
BootRun 任务提供了配置应用程序参数(args)和 JVM 参数(jvmargs)的属性,通过
execspec
可以使用更高级的配置。有关更多详细信息,请参阅 Gradle插件文档。根据用户的反馈,BootRun 任务再次成为 Gradle 的 JavaExec 任务的一个子类。它可以像其他任何 JavaExec 任务一样进行配置。
默认数据库连接池
默认连接池已从 Tomcat 更改为 HikariCP。如果你在 tomcat-jdbc
的环境中使用 Hikari
,则可以删除 spring.datasource.type
。同样,如果你想继续使用 tomcat 连接池,只需将以下内容添加到配置中:
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
数据库迁移
liquibase 和 flyway 配置键被移动到 spring namespace, 即分别为 spring.liquibase
和 spring.flyway
Flyway/Liquibase 灵活配置
如果仅提供自定义 url
或 user
,则自动配置将重用标准数据源属性而不是忽略它们。这允许你仅使用所需的信息为迁移目的创建自定义数据源。
检测数据源初始化
如果 Flyway 或 Liquibase 正在管理数据源,并且你使用的是嵌入式数据库,则 Spring Boot 2 会自动关闭 Hibernate 的自动 DDL 功能。
数据库初始化器
仅当使用嵌入式数据库时,默认情况下会发生 Spring Batch、Spring Integration、 Spring Session、 Quartz 数据库初始化。 enable
属性已被替换为更具表现力的枚举。例如,如果要始终执行 Spring Batch 初始化,可以设置:
spring.batch.initialize-schema=always
数据库初始化
数据源初始化仅针对嵌入式数据源启用,并且只要你使用生产数据库就会关闭。此外,新的 spring.datasource.initialization-mode
(替换spring.datasource.initialize
)提供了更多控制。
数据源指标
检测工具负责监视所有可用的数据源,并为每个数据源发布度量标准(最小值、最大值和使用率)。
可配置的 JPA 映射资源
可以通过 spring.jdbc.template
自定义 Spring Boot 自动配置的 JdbcTemplate
。此外,自动配置的 NamedParameterJdbcTemplate
在幕后重用了 JdbcTemplate
。
Hibernate
Hibernate 的最低支持版本是5.2。阅读 hibernate 5.2迁移指南 以了解如何升级。
支持自定义 Hibernate 命名策略对于高级场景,您可以定义 ImplicitNamingStrategy
或 PhysicalNamingStrategy
在上下文中用作常规 Bean。
Hibernate 属性定制通过暴露 HibernatePropertiesCustomizer
,可以更加细致地定制 Hibernate 使用的属性。
Cassandra
The spring.data.cassandra
exposes pooling options.
响应式 Couchbase 支持
Spring Data Reactive Repositories 可用于 Couchbase,并且可以通过 spring-boot-starter-data-couchbase-reactive
轻松使用。
InfluxDB
如果设置了 InfluxDB Java客户端和 spring.influx.url
,则会自动配置 InfluxDB 客户端。对凭证的支持也是可用的。运行状况端点可以监视InfluxDB 服务器。
Redis 缓存配置
可以暴露 RedisCacheConfiguration
控制 RedisCacheManager
。还引入了新的注释 @dataredistest
。
Elasticsearch
Spring Boot 2 从现在开始需要 Elasticsearch 5.4 。 Elastic’s announcement that embedded Elasticsearch is no longer supported, NodeClient
的自动配置已被删除。一个TransportClient
可以通过使用 spring.data.elasticsearch.cluster-nodesto
来自动配置一个或多个要连接的节点的地址。
Mongo 客户端自定义
可以通过定义一个类型为 MongoClientSettingsBuilderCustomizer
的bean 来将高级定制应用于 Spring Boot 自动配置的 MongoDB 客户端。
Mockito 1.x
Mockito 1.x 不再支持 @MockBean
和 @SpyBean
。如果你不使用 spring-boot-starter-test
来管理你的依赖关系,你应该升级到 Mockito 2.x.
Kotlin Extensions for TestRestTemplate
Kotlin RestTemplate
扩展也可用于 TestRestTemplate
,以使开发者体验一致。
测试改进
Converter
和 GenericConverter
会自动使用 @WebMvcTest
和 @WebFluxTest
进行扫描。
微信公众号:
JAVA程序猿成长之路
分享资源,记录程序猿成长点滴。专注于Java,Spring,SpringBoot,SpringCloud,分布式,微服务。