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

转载至微信公众号  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 BootRun

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


※ JDBC/ORM 变化

默认数据库连接池

默认连接池已从 Tomcat 更改为  HikariCP。如果你在 tomcat-jdbc的环境中使用 Hikari,则可以删除 spring.datasource.type 。同样,如果你想继续使用 tomcat 连接池,只需将以下内容添加到配置中:

 
  1. spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource

数据库迁移

liquibase 和 flyway 配置键被移动到 spring namespace, 即分别为 spring.liquibasespring.flyway

Flyway/Liquibase 灵活配置

如果仅提供自定义 urluser,则自动配置将重用标准数据源属性而不是忽略它们。这允许你仅使用所需的信息为迁移目的创建自定义数据源。

检测数据源初始化

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

数据库初始化器

仅当使用嵌入式数据库时,默认情况下会发生 Spring Batch、Spring Integration、 Spring Session、 Quartz 数据库初始化。 enable 属性已被替换为更具表现力的枚举。例如,如果要始终执行 Spring Batch 初始化,可以设置:

 
  1. 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 命名策略对于高级场景,您可以定义 ImplicitNamingStrategyPhysicalNamingStrategy 在上下文中用作常规 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,以使开发者体验一致。

测试改进

ConverterGenericConverter 会自动使用 @WebMvcTest@WebFluxTest 进行扫描。

   

                                                                               微信公众号: 

                                               

                                                                             JAVA程序猿成长之路

                          分享资源,记录程序猿成长点滴。专注于Java,Spring,SpringBoot,SpringCloud,分布式,微服务。 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值