您的位置:首页 > 编程语言 > Java开发

2-0 Spring Boot 2.0 新特性:基础设施变化

2018-03-06 08:07 597 查看
转载至微信公众号  SpringForAll社区

※ Spring Boot 变化

最低 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 BootRunBootRun 任务提供了配置应用程序参数(args)和 JVM 参数(jvmargs)的属性,通过
execspec
可以使用更高级的配置。有关更多详细信息,请参阅 Gradle插件文档。根据用户的反馈,BootRun 任务再次成为 Gradle 的 JavaExec 任务的一个子类。它可以像其他任何 JavaExec 任务一样进行配置。

※ JDBC/ORM 变化

默认数据库连接池

默认连接池已从 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 使用的属性。

※ NOSQL

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
进行扫描。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  springboot2.0