Spring Boot 2.7发行,2.5弃用,节奏太快 卷不动了

从 Spring Boot 2.6 升级

@SpringBootTest 属性源优先级

@SpringBootTest通过使用properties属性或注释添加的测试属性源@TestPropertySource现在添加到命令行属性源上方。如果您遇到的情况不太可能@SpringBootTest同时使用propertiesand args(并且具有相同的属性名称),您可能需要进行更改。

新飞路模块

Spring Boot 2.7 升级到 Flyway 8.5(从 8.0)。从 8.0 版本开始,Flyway 对多个数据库的支持被提取到了新的模块中:

  • flyway-firebird(火鸟)

  • flyway-mysql(MariaDB 和 MySQL)

  • flyway-sqlserver(SQL 服务器)

如果您使用 Flyway 管理上述数据库之一的架构,请添加对相应新模块的依赖项。

H2 2.1

Spring Boot 2.7 已经升级到 H2 2.1.120。H2 2.x 向后不兼容并修复了许多安全漏洞。有关更改的详细信息以及如何处理升级,请参阅H2 更改日志迁移指南。

OkHttp 4

由于不再维护 OkHttp 3,Spring Boot 2.7 已升级到 OkHTTP 4。作为此次升级的一部分,用于控制 OkHttp 版本的属性已从 更改okhttp3.versionokhttp.version

OkHttp 4 旨在向后兼容 OkHttp 3。如果您的应用程序不是这种情况,或者出于其他原因希望继续使用 OkHttp 3,okttp.version请在构建中配置该属性。

移除了 netty-tcnative 的独立依赖管理

netty-tcnative已删除单独的依赖管理,以支持 Netty 的 bom 提供的依赖管理。这确保了 的版本netty-tcnative将与 Netty 默认使用的版本保持一致。由于此更改,该netty-tcnative.version属性不能再用于覆盖netty-tcnative. 该版本仍然可以通过提供您自己的依赖管理来覆盖,但建议它与 Netty 的默认版本保持一致。

spring.mongodb.embedded.features配置属性已删除

Embedded Mongo 3.4 已放弃对配置 Mongo 功能的支持。反映这一点,spring.mongodb.embedded.features配置属性已被删除。对于指定功能以更改用于启动 Mongo 的命令行的高级配置,MongodConfig应提供自定义 bean。

特定于 Servlet 的 Mustache 属性

不推荐使用以下特定于 Servlet 的 Mustache 相关属性:

  • spring.mustache.allow-request-override

  • spring.mustache.allow-session-override

  • spring.mustache.cache

  • spring.mustache.content-type

  • spring.mustache.expose-request-attributes

  • spring.mustache.expose-session-attributes

  • spring.mustache.expose-spring-macro-helpers

引入了以下替换:

  • spring.mustache.servlet.allow-request-override

  • spring.mustache.servlet.allow-session-override

  • spring.mustache.servlet.cache

  • spring.mustache.servlet.content-type

  • spring.mustache.servlet.expose-request-attributes

  • spring.mustache.servlet.expose-session-attributes

  • spring.mustache.servlet.expose-spring-macro-helpers

自动配置的 ReactiveElasticsearchTemplate 上的默认索引选项

自动配置的默认索引选项ReactiveElasticsearchTemplate已更改,以使其与 Spring Data Elasticsearch 保持一致。以前,默认值为strictExpandOpenAndForbidClosed. 他们现在strictExpandOpenAndForbidClosedIgnoreThrottled。要恢复旧的索引选项,请定义您自己的reactiveElasticsearchTemplatebean:

@Bean
ReactiveElasticsearchTemplate reactiveElasticsearchTemplate(ReactiveElasticsearchClient client,
        ElasticsearchConverter converter) {
    ReactiveElasticsearchTemplate template = new ReactiveElasticsearchTemplate(client, converter);
    template.setIndicesOptions(IndicesOptions.strictExpandOpenAndForbidClosed());
    return template;
}

MongoDB 属性优先级

以前,如果spring.data.mongodb.uri与任何等效的单独属性(例如spring.data.mongodb.host和)一起配置,spring.data.mongodb.port则会引发异常。该uri属性现在优先于任何单独的属性 -spring.data.mongodb.uri设置时它们会被忽略。这使行为与其他类似属性(例如spring.redis.url.

在 Maven 进程中运行您的应用程序

Maven 插件的spring-boot:run和目标默认情况下在分叉处理中运行您的应用程序。spring-boot:start可以使用fork插件的属性禁用此行为。此属性现在已弃用,没有替换。

有序退出代码生成器

ExitCodeGenerator现在根据它们的Ordered实现和@Order注释对 s 进行排序。使用生成的第一个非零退出代码。

重命名的指标标签键

中的公制标签键camelCase已重命名,以符合 Micrometer 的建议,即全部使用小写字母和.分隔符。以下指标和标签键受到影响:

公制旧标签键新标签键
application.ready.timemain-application-classmain.application.class
application.started.timemain-application-classmain.application.class
cache.*cacheManagercache.manager
http.client.requestsclientNameclient.name

如果您需要恢复以前的名称,请定义一个实现修改标记键MeterFilter的方法的 bean 。map(Id)

对 Elasticsearch 的 RestHighLevelClient 的支持已弃用

Elasticsearch 已弃用其RestHighLevelClient. 与此一致,Spring Boot 的自动配置RestHighLevelClient已被弃用。在可能的情况下,应使用自动配置的低级别RestClient。或者,考虑手动配置新客户端

Spring Boot 2.5 的弃用

在 Spring Boot 2.5 中不推荐使用的类、方法和属性已在此版本中删除。请确保在升级之前您没有调用过时的方法。

新的和值得注意的

新的 Spring GraphQL 启动器

支持 RabbitStreamTemplate

RabbitStreamTemplate如果使用该spring.rabbitmq.stream.name属性设置流名称,则自动配置A。提供了A RabbitStreamTemplateConfigurer,类似于RabbitTemplateConfigurer在保留自动配置的同时自定义其他实例。

Hazelcast@SpringAware支持

自动配置的 Hazelcast 嵌入式服务器现在SpringManagerContext默认使用。这使得将 Spring 管理的 bean 注入到 Hazelcast 实例化的对象中成为可能。HazelcastConfigCustomizer还引入了回调接口,可用于进一步调整 Hazelcast 服务器配置。

Info 端点中的操作系统信息

可以OsInfoContributor公开有关应用程序运行的操作系统的一些信息:

{
  "os": {
    "name": "Linux",
    "version": "5.4.0-1051-gke",
    "arch": "amd64"
  }
}

默认情况下禁用此新贡献者。可以使用该management.info.os.enabled属性启用它。

Info 端点中的 Java 供应商信息

现有的JavaInfoContributor已经过改进,为供应商信息提供了一个专门的部分,包括供应商特定的版本。它现在不是一个顶级的vendor简单属性,而是一个具有nameversion属性的专用对象:

{
  "java": {
    "vendor": {
       "name": "Eclipse Adoptium",
        "version": "Temurin-17.0.1+12"
    },
    "..."
}

请注意,并非所有供应商都公开java.vendor.version系统属性,因此该version属性可能是null.

在 RSocket 处理程序方法中访问经过身份验证的主体

RSocket 处理程序方法现在可以注入@Authenticated Principal

@MessageMapping ("test") 
Mono<String> hello (@Authenticated Principal p){ 
    return Mono.just ("Hello, "  + p.getName()) ;
}

不使用 OIDC SDK 的不透明令牌自省

如果您在 OAuth2 资源服务器中使用不透明令牌自省,则自动配置的自省不再需要对com.nimbusds:oauth2-oidc-sdk. 根据 SDK 的其他用途,您可能能够从应用程序中删除依赖项。

@DataCouchbaseTest

@DataCouchbaseTest引入了用于测试使用 Spring Data Couchbase 的应用程序的新注释。有关详细信息,请参阅更新的参考文档

@DataElasticsearchTest

@DataElasticsearchTest引入了用于测试使用 Spring Data Elasticsearch 的应用程序的新注释。有关详细信息,请参阅更新的参考文档

SAML2 注销的自动配置

如果您使用 Spring Security 的 SAML2 支持,您可以通过配置属性配置 RP 启动或 AP 启动的注销。有关详细信息,请参阅更新的参考文档

对自动配置的更改

自动配置注册

如果您创建了自己的自动配置,则应将注册从spring.factories名为META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. 每行包含自动配置的完全限定名称。有关示例,请参阅包含的自动配置。

为了向后兼容,spring.factories仍然会尊重条目。

新的@AutoConfiguration 注解

引入了新的@AutoConfiguration注释。它应该用于注释新文件中列出的顶级自动配置类META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,替换@Configuration. 嵌套在类中或由类导入的配置@AutoConfiguration类应该像以前一样继续使用@Configuration

为方便起见,还支持通过、和属性进行@AutoConfiguration自动配置排序。这可以用作 和 的替代品。after``afterNames``before``beforeNames``@AutoConfigureAfter``@AutoConfigureBefore

测试切片配置

如果您已经创建了自己的测试片,您应该将注册spring.factoriesMETA-INF/spring/<name of your test slice annotation>.imports. 格式与“自动配置注册”部分中描述的新文件相同,见上文。

故障分析器注入

FailureAnalyzer实现现在可以通过提供一个将这些值中的一个或两个作为参数的构造函数来访问当前应用程序上下文的 和BeanFactoryEnvironment支持BeanFactory通过实现注入和通过实现注入BeanFactoryAwarea的支持已被弃用,并将在未来的版本中删除。Environment``EnvironmentAware``FailureAnalyzer

Redis Sentinel 用户名支持

已使用该spring.redis.sentinel.username属性添加了对指定用于向 Sentinel 进行身份验证的用户名的支持。

覆盖内置清理

SanitizingFunctionbean 现在按顺序调用,一旦函数更改了SanitizableData. 如果没有SanitizingFunctionbean 清理值,则执行内置的基于键的清理。函数通过它们的@Order注释或它们的Ordered实现来排序。

Docker 镜像构建

播客支持

Maven 和 Gradle 插件现在支持在使用 Cloud Native Buildpacks 构建映像时使用 Podman 容器引擎作为 Docker 引擎的替代方案。

Cache2k 支持

添加了Cache2k的依赖项管理和自动配置。可以通过定义Cache2kBuilderCustomizerbean 来自定义默认缓存设置。

Jackson Mixin 的简化注册

Jackson 的自动配置现在将扫描您的应用程序包以查找带有@JsonMixin. 找到的任何类都会自动注册为带有 auto-configured 的 mixins ObjectMapper

使用 PEM 编码证书的 Web 服务器 SSL 配置

server.ssl.certificate嵌入式 Web 服务器可以配置为使用 SSL 与 PEM 编码的证书和使用属性和的私钥文件server.ssl.certificate-private-key,以及可选的server.ssl.trust-certificateserver.ssl.trust-certificate-private-key。可以使用类似management.server.ssl.*的属性来保护管理端点。有关示例,请参阅文档。这是作为使用 Java KeyStore 文件配置 SSL 的替代方法提供的。

各种各样的

除了上面列出的更改之外,还有许多小的调整和改进,包括:

  • idlePartitionEventInterval可以使用该spring.kafka.listener.idle-partition-event-interval属性配置Kafka 。

  • KafkaTemplate transactionIdPrefix可以使用属性配置spring.kafka.template.transaction-id-prefix属性。

  • NettymaxKeepAliveRequests可以使用该server.netty.max-keep-alive-requests属性进行配置。

  • @DataJdbcTest自动扫描AbstractJdbcConfigurationbean。

  • 使用UserDetailsServiceSAML 2.0 登录时不再自动配置 bean。

  • Spring Batch 的事务隔离级别可以使用该spring.batch.jdbc.isolation-level-for-create属性进行配置。

  • 现在可以通过定义自己的FilterRegistrationBean<WebMvcMetricsFilter>bean 来替换用于记录 Spring MVC 指标的过滤器。

  • 的 IDDatabaseDriver.MARIADB已从 更改mysqlmariadb

  • in现在InputStream返回的实现.RandomAccessDataFile``spring-boot-loader``available()

  • Spring KafkaimmediateStop可以使用该spring.kafka.listener.immediate-stop属性进行配置。

  • 一个新属性 ,spring.mustache.reactive.media-types可用于配置响应式 Mustache 视图支持的媒体类型。

  • ElasticsearchRestClientBuilderRestClientbeans 现在elasticsearch-rest-client在 classpath 上时会自动配置。如果elasticsearch-rest-high-level-client在类路径上,RestHighLevelClientbean 仍将像以前一样自动配置,但请注意,RestHighLevelClient现在不支持对。

Spring Boot 2.7 中的弃用

  • 不推荐从加载自动配置spring.factories。有关更多详细信息,请参见上文。

  • DatabaseDriver.GAE

  • 下的属性spring.security.saml2.relyingparty.registration.{id}.identityprovider已移至spring.security.saml2.relyingparty.registration.{id}.assertingparty。使用旧的属性名称会导致启动时出现 WARN 级别的日志消息。

posted @ 2022-05-23 16:31  勇不停歇  阅读(323)  评论(0)    收藏  举报