从 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.version为okhttp.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.time main-application-class main.application.class
application.started.time main-application-class main.application.class
cache.* cacheManager cache.manager
http.client.requests clientName client.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简单属性,而是一个具有name和version属性的专用对象:
{ "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.factories从META-INF/spring/<name of your test slice annotation>.imports. 格式与“自动配置注册”部分中描述的新文件相同,见上文。
故障分析器注入
FailureAnalyzer实现现在可以通过提供一个将这些值中的一个或两个作为参数的构造函数来访问当前应用程序上下文的 和BeanFactory。Environment支持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-certificate和server.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已从 更改mysql为mariadb
in现在InputStream返回的实现.RandomAccessDataFile``spring-boot-loader``available()
Spring KafkaimmediateStop可以使用该spring.kafka.listener.immediate-stop属性进行配置。
一个新属性 ,spring.mustache.reactive.media-types可用于配置响应式 Mustache 视图支持的媒体类型。
ElasticsearchRestClientBuilder和RestClientbeans 现在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 级别的日志消息。