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

Spring Boot 2.0已发布,来聊聊它的新特性。

2018-03-06 20:31 836 查看
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 BootRun

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

JDBC/ORM 变化

默认数据库连接池

默认连接池已从 Tomcat 更改为 HikariCP。如果你在 tomcat-jdbc的环境中使用 Hikari,则可以删除 spring.datasource.type 。同样,如果你想继续使用 tomcat 连接池,只需将以下内容添加到配置中:数据库迁移liquibase 和 flyway 配置键被移动到 spring namespace,即分别为 spring.liquibase 和 spring.flywayFlyway/Liquibase 灵活配置如果仅提供自定义 url 或 user,则自动配置将重用标准数据源属性而不是忽略它们。这允许你仅使用所需的信息为迁移目的创建自定义数据源。

检测数据源初始化

如果 Flyway 或 Liquibase 正在管理数据源,并且你使用的是嵌入式数据库,则 Spring Boot 2 会自动关闭 Hibernate 的自动 DDL 功能。

数据库初始化器

仅当使用嵌入式数据库时,默认情况下会发生 Spring Batch、Spring Integration、 Spring Session、 Quartz 数据库初始化。enable属性已被替换为更具表现力的枚举。例如,如果要始终执行 Spring Batch 初始化,可以设置:数据库初始化数据源初始化仅针对嵌入式数据源启用,并且只要你使用生产数据库就会关闭。此外,新的 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

CassandraThe 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 来管理你的依赖关系,你应该Mockito2.x.

Kotlin Extensions for TestRestTemplate

Kotlin RestTemplate 扩展也可用于 TestRestTemplate,以使开发者体验一致。

测试改进Converter和 GenericConverter 会自动使用 @WebMvcTest和 @WebFluxTest进行扫描。

推荐一个交流学习群:697579751 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息