spirngboot2.7迁移3.0指南

2.7~3.0的迁移指南

官方文档:Spring Boot 3.0 Migration Guide · spring-projects/spring-boot Wiki · GitHub

升级到最新2.7.x版本

在开始升级之前,请确保升级到最新的可用2.7.x版本。这将确保您针对该行的最新依赖项进行构建。

查看依赖关系

迁移到 Spring Boot 3 将升级许多依赖项,并且可能需要您进行一些工作。您可以使用依赖管理查看2.7.x依赖管理以3.0.x评估您的项目受到的影响。

您还可以使用不受 Spring Boot 管理的依赖项(例如 Spring Cloud)。由于您的项目为这些定义了一个明确的版本,因此您需要在升级之前首先确定兼容的版本。

Spring Security

Spring Boot 3.0 使用了 Spring Security 6.0。Spring Security 团队发布了 Spring Security 5.8 以简化向 Spring Security 6.0 的升级。在升级到 Spring Boot 3.0 之前,请考虑将您的 Spring Boot 2.7 应用程序升级到 Spring Security 5.8。Spring Security 团队已经制作了一份迁移指南,可以帮助您这样做。从那里,您可以在升级到 Spring Boot 3.0 时遵循5.8 到 6.0 迁移指南。

调度类型

在 Servlet 应用程序中,Spring Security 6.0 将授权应用于每个调度类型。为了与此 Spring Boot 保持一致,现在将 Spring Security 的过滤器配置为为每种分派类型调用。可以使用属性配置类型spring.security.filter.dispatcher-types

查看系统要求

Spring Boot 3.0 需要 Java 17 或更高版本。不再支持 Java 8。它还需要 Spring Framework 6.0。

查看 Spring Boot 2.x 的弃用

Spring Boot 2.x 中弃用的类、方法和属性已在此版本中删除。请确保您在升级之前没有调用已弃用的方法。

升级到 Spring Boot 3

检查项目及其依赖项的状态后,升级到 Spring Boot 3.0 的最新维护版本。

配置属性迁移

可查看上文提到的新的配置和值得注意的,很关键,配置更改日志

在 Spring Boot 3.0 中,一些配置属性被重命名/删除,开发人员需要相应地更新他们的application.propertiesapplication.yml。为了帮助您,Spring Boot 提供了一个spring-boot-properties-migrator模块。一旦添加为项目的依赖项,这不仅会在启动时分析应用程序的环境并打印诊断信息,还会在运行时为您临时迁移属性。

您可以通过将以下内容添加到您的 Maven 来添加迁移器pom.xml

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-properties-migrator</artifactId>
	<scope>runtime</scope>
</dependency>

或者,如果您使用 Gradle:

runtime("org.springframework.boot:spring-boot-properties-migrator")

Spring Framework 6.0

Spring Boot 3.0 构建在需要 Spring Framework 6.0 的基础上。在继续之前,您可能需要查看他们的升级指南。

Jakarta EE

每当 Spring Boot 依赖 Jakarta EE 规范时,Spring Boot 3.0 已升级到 Jakarta EE 10 中包含的版本。例如,Spring Boot 3.0 使用 Servlet 6.0 和 JPA 3.1 规范。

如果您正在管理自己的依赖项,而不依赖于我们的入门 POM,则应确保已适当更新 Maven 或 Gradle 文件。您需要特别注意旧的 Java EE 依赖项不再直接或可传递地用于您的构建中。例如,如果您应该始终使用jakarta.servlet:jakarta.servlet-api而不是javax.servlet:javax.servlet-api.

除了依赖坐标的变化,Jakarta EE 现在使用jakarta包而不是javax. 更新依赖项后,您可能会发现import项目中的语句需要更新。

有许多工具可以帮助迁移,包括:

核心变化

对与大多数应用程序相关的 Spring Boot 核心进行了多项更改。

图像横幅支持已删除

已删除对基于图像的应用程序横幅的支持。banner.gifbanner.jpgbanner.png文件现在将被忽略,应替换为基于文本的banner.txt文件。

记录日期格式

Logback 和 Log4j2 日志消息的日期和时间组件的默认格式已更改以符合 ISO-8601 标准。新的默认格式yyyy-MM-dd’T’HH:mm:ss.SSSXXX使用 aT来分隔日期和时间而不是空格字符,并将时区偏移量添加到末尾。环境LOG_DATEFORMAT_PATTERN变量或logging.pattern.dateformat属性可用于恢复以前的默认值yyyy-MM-dd HH:mm:ss.SSS

类型级别不再需要@ConstructingBinding

@ConstructorBinding在类的类型级别不再需要@ConfigurationProperties,应该删除。当一个类或记录有多个构造函数时,它仍然可以用在构造函数上以指示应该使用哪个构造函数进行属性绑定。

YamlJsonParser 已被删除

YamlJsonParser已被删除,因为 SnakeYAML 的 JSON 解析与其他解析器实现不一致。万一您YamlJsonParser直接使用,请迁移到其他实现之一JsonParser

自动配置文件

Spring Boot 2.7引入了META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports一个用于注册自动配置的新文件,同时保持与spring.factories. 在此版本中,已删除对在其中注册自动配置的支持,spring.factories以支持导入文件。

Web 应用程序更改

如果您要升级 Web 应用程序,则应查看以下部分。

Spring MVC 和 WebFlux URL 匹配变化

从 Spring Framework 6.0 开始,尾部斜杠匹配配置选项已被弃用,其默认值设置为false. 这意味着以前,以下控制器将同时匹配“GET /some/greeting”和“GET /some/greeting/”:

@RestController
public class MyController {

  @GetMapping("/some/greeting")
  public String greeting() {
    return "Hello";
  }

}

这个 Spring Framework 更改开始,默认情况下“GET /some/greeting/”不再匹配,将导致 HTTP 404 错误。

开发人员应该改为通过代理、Servlet/web 过滤器配置显式重定向/重写,或者甚至在控制器处理程序上显式声明附加路由(例如@GetMapping("/some/greeting", "/some/greeting/")针对更有针对性的情况。

在您的应用程序完全适应此更改之前,您可以使用以下全局 Spring MVC 配置更改默认设置:

@Configuration
public class WebConfiguration implements WebMvcConfigurer {

    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
      configurer.setUseTrailingSlashMatch(true);
    }

}

或者,如果您使用的是 Spring WebFlux:

@Configuration
public class WebConfiguration implements WebFluxConfigurer {

    @Override
    public void configurePathMatching(PathMatchConfigurer configurer) {
      configurer.setUseTrailingSlashMatch(true);
    }

}

'server.max-http-header-size'

以前,server.max-http-header-size在四个受支持的嵌入式 Web 服务器之间处理不一致。使用 Jetty、Netty 或 Undertow 时,它将配置最大 HTTP 请求标头大小。使用 Tomcat 时,它会配置最大 HTTP 请求和响应标头大小。

为了解决这种不一致,server.max-http-header-size已弃用并server.max-http-request-header-size引入了替代品 。这两个属性现在仅适用于请求标头大小,与底层 Web 服务器无关。

要在 Tomcat 或 Jetty(仅有的两个支持此类设置的服务器)上限制 HTTP 响应的最大标头大小,请使用WebServerFactoryCustomizer.

更新了正常关机的阶段

SmartLifecycle已更新实现正常关闭所使用的阶段。正常关机现在分阶段开始SmartLifecycle.DEFAULT_PHASE - 2048,Web 服务器分阶段停止SmartLifecycle.DEFAULT_PHASE - 1024SmartLifecycle参与正常关闭的任何实现都应相应更新。

码头

Jetty 还不支持 Servlet 6.0。要将 Jetty 与 Spring Boot 3.0 一起使用,您必须将 Servlet API 降级到 5.0。您可以使用该jakarta-servlet.version属性来执行此操作。

RestTemplate 中的 Apache HttpClient

Spring Framework 6.0 中删除了对 Apache HttpClient 的支持,立即替换为org.apache.httpcomponents.client5:httpclient5(注意:此依赖项具有不同的 groupId)。如果您注意到 HTTP 客户端行为存在问题,则可能是RestTemplate回退到 JDK 客户端。org.apache.httpcomponents:httpclient可以由其他依赖项传递,因此您的应用程序可能会依赖此依赖项而无需声明它。

JSP

org.apache.tomcat.embed:tomcat-embed-jasper要在打包为可执行 war 文件并启动的应用程序中使用带有 Jasper() 的 JSP java -jar your-application.warjdk.util.jar.enableMultiRelease系统属性必须设置为false。例如:

$ java -Djdk.util.jar.enableMultiRelease=false -jar your-application.war

执行器变化

如果您使用 Spring Boot 的执行器模块,您应该了解以下更新。

JMX 端点暴露

默认情况下,现在只有健康端点通过 JMX 公开,以与默认的 Web 端点公开保持一致。management.endpoints.jmx.exposure.include这可以通过配置和属性来更改management.endpoints.jmx.exposure.exclude

“httptrace”端点重命名为“httpexchanges”

端点httptrace和相关基础设施记录并提供对最近 HTTP 请求-响应交换信息的访问。在引入对Micrometer Tracing的支持后,名称httptrace可能会引起混淆。为了减少这种可能的混淆,端点已重命名为httpexchanges. 端点响应的内容也受到此重命名的影响。有关详细信息,请参阅执行器 API 文档。

相关的基础设施类也已重命名。例如,HttpTraceRepository现在已命名HttpExchangeRepository并且可以在包中找到org.springframework.boot.actuate.web.exchanges

Actuator JSON

Spring Boot 附带的执行器端点的响应现在使用隔离ObjectMapper实例来确保结果一致。如果您想恢复到旧行为并使用ObjectMapper您可以设置management.endpoints.jackson.isolated-object-mapper为的应用程序false

如果您开发了自己的端点,您可能希望确保响应实现接口OperationResponseBodyObjectMapper这将确保在将响应序列化为 JSON 时考虑隔离。

执行器端点暴露

由于/env/configprops端点可以包含敏感值,因此默认情况下始终屏蔽所有值。这曾经只适用于被认为是敏感的密钥。

相反,此版本选择了更安全的默认设置。基于键的方法已被删除,取而代之的是基于角色的方法,类似于健康端点详细信息。是否显示未过滤的值可以使用属性进行配置management.endpoint.env.show-values,或者management.endpoint.configprops.show-values可以具有以下值:

  • NEVER- 所有值都经过清理(默认值)。
  • ALWAYS- 所有值都出现在输出中(将应用清理功能)。
  • WHEN_AUTHORIZED- 仅当用户获得授权时,值才会出现在输出中(将应用清理功能)。

对于 JMX,用户总是被认为是被授权的。对于 HTTP,如果用户通过身份验证并具有指定的角色,则认为他们已获得授权。

QuartzEndpoint 的清理也可以使用属性以相同的方式配置management.endpoint.quartz.show-values

QuartzEndpoint 的清理也可以使用属性以相同的方式配置management.endpoint.quartz.show-values

Micrometer and Metrics Changes

Spring Boot 3.0 建立在 Micrometer 1.10 之上。如果您的应用程序收集并导出指标,您应该了解以下变化。

弃用 Spring Boot 2.x 工具

由于与 Observation 支持集成,我们现在弃用以前的工具。执行实际检测的过滤器、拦截器已完全删除,因为无法解决整类错误,并且重复检测的风险太高。例如,WebMvcMetricsFilter已被完全删除并被 Spring Framework 的ServerHttpObservationFilter. 相应的*TagProvider *TagContributor*Tags类已被弃用。默认情况下,观察仪器不再使用它们。我们在弃用阶段保留它们,以便开发人员可以将他们现有的基础架构迁移到新的基础架构。

标签提供者和贡献者迁移

如果您的应用程序正在自定义指标,您可能会在代码库中看到新的弃用。在我们的新模型中,标签提供者和贡献者都被观察约定所取代。让我们以 Spring Boot 2.x 中的 Spring MVC“http.server.requests”指标检测支持为例。

如果您贡献额外的TagsTagContributor只是部分覆盖 a ,您可能应该根据您的要求TagProvider扩展:DefaultServerRequestObservationConvention

public class ExtendedServerRequestObservationConvention extends DefaultServerRequestObservationConvention {

  @Override
  public KeyValues getLowCardinalityKeyValues(ServerRequestObservationContext context) {
    // here, we just want to have an additional KeyValue to the observation, keeping the default values
    return super.getLowCardinalityKeyValues(context).and(custom(context));
  }

  protected KeyValue custom(ServerRequestObservationContext context) {
    return KeyValue.of("custom.method", context.getCarrier().getMethod());
  }

}

如果您要显着更改 metrics Tags,您可能会WebMvcTagsProvider用自定义实现替换 并将其作为 bean 提供。在这种情况下,您可能应该为您感兴趣的观察实施约定。在这里,我们将实施ServerRequestObservationConvention- 它用于ServerRequestObservationContext提取有关当前请求的信息。然后,您可以根据您的要求实施方法:

public class CustomServerRequestObservationConvention implements ServerRequestObservationContext {

  @Override
  public String getName() {
    // will be used for the metric name
    return "http.server.requests";
  }

  @Override
  public String getContextualName(ServerRequestObservationContext context) {
    // will be used for the trace name
    return "http " + context.getCarrier().getMethod().toLowerCase();
  }

  @Override
  public KeyValues getLowCardinalityKeyValues(ServerRequestObservationContext context) {
    return KeyValues.of(method(context), status(context), exception(context));
  }

  @Override
  public KeyValues getHighCardinalityKeyValues(ServerRequestObservationContext context) {
    return KeyValues.of(httpUrl(context));
  }

  protected KeyValue method(ServerRequestObservationContext context) {
    // You should reuse as much as possible the corresponding ObservationDocumentation for key names
    return KeyValue.of(ServerHttpObservationDocumentation.LowCardinalityKeyNames.METHOD, context.getCarrier().getMethod());
  }

  //...
}

在这两种情况下,您都可以将它们作为 beans 贡献给应用程序上下文,它们将被自动配置拾取,有效地替换默认的。

@Configuration
public class CustomMvcObservationConfiguration {

  @Bean
  public ExtendedServerRequestObservationConvention extendedServerRequestObservationConvention() {
    return new ExtendedServerRequestObservationConvention();
  }

}

您还可以使用自定义的类似目标ObservationFilter- 添加或删除观察的键值。过滤器不会取代默认约定,而是用作后处理组件。

public class ServerRequestObservationFilter implements ObservationFilter {

  @Override
  public Observation.Context map(Observation.Context context) {
    if (context instanceof ServerRequestObservationContext serverContext) {
      context.addLowCardinalityKeyValue(KeyValue.of("project", "spring"));
      String customAttribute = (String) serverContext.getCarrier().getAttribute("customAttribute");
      context.addLowCardinalityKeyValue(KeyValue.of("custom.attribute", customAttribute));
    }
    return context;
  }
}

Micrometer 的 JvmInfoMetrics 的自动配置

千分尺JvmInfoMetrics现在是自动配置的。JvmInfoMetrics可以删除任何手动配置的bean 定义。

执行器指标导出属性

我们已经移动了控制执行器指标导出的属性。旧模式是management.metrics.export.<product>,新模式是management.<product>.metrics.export(例如:prometheus 属性从移动management.metrics.export.prometheusmanagement.prometheus.metrics.export)。如果您使用的是spring-boot-properties-migrator,您将在启动时收到通知。

有关详细信息,请参阅问题 #30381

mongodb健康检查

for HealthIndicatorMongoDB 现在支持 MongoDB 的稳定 API。查询buildInfo已替换为isMaster,响应现在包含maxWireVersion而不是version。如MongoDB 文档中所述,客户端可以使用它maxWireVersion来帮助协商与 MongoDB 的兼容性。注意maxWireVersion是整数。

数据访问更改

如果您的应用程序正在处理数据,则应检查以下更改。

对数据属性的更改

spring.data前缀已为 Spring Data 保留,前缀下的任何属性都暗示类路径上需要 Spring Data。

Cassandra 配置属性

Cassandra 的配置属性已从.spring.data.cassandra.``spring.cassandra.

Redis 属性

Redis 的配置属性已从移动到,因为 Redis 自动配置要求类路径中存在 Spring Data。spring.redis.``spring.data.redis.

flyway

Spring Boot 3.0 默认使用 Flyway 9.0。请参阅 Flyway发行说明博客文章,了解这对您的应用程序有何影响。

FlywayConfigurationCustomizer`现在调用 beans 来自定义`FluentConfiguration`any`Callback`和`JavaMigration`beans 已添加到配置中。可能必须更新使用定制器定义`Callback`和beans 并添加回调和 Java 迁移的应用程序,以确保使用预期的回调和 Java 迁移。`JavaMigration

Hibernate 6.1

Spring Boot 3.0 默认使用 Hibernate 6.1。请参阅 Hibernate 6.06.1迁移指南以了解这对您的应用程序有何影响。

依赖管理和spring-boot-starter-data-jpa启动程序已更新为使用新的org.hibernate.orm组 ID 作为其 Hibernate 依赖项。

配置spring.jpa.hibernate.use-new-id-generator-mappings属性已被删除,因为 Hibernate 不再支持切换回旧的 ID 生成器映射。

嵌入式MongoDB

Flapdoodle 嵌入式 MongoDB 的自动配置和依赖管理已被删除。如果您使用嵌入式 MongoDB 进行测试,请使用Flapdoodle 项目提供的自动配置库或修改测试以使用Testcontainers项目而不是嵌入式 MongoDB。

R2DBC 1.0

Spring Boot 3.0 默认使用 R2DBC 1.0。随着 1.0 版本的发布,R2DBC 不再发布影响 Spring Boot 依赖管理的物料清单 (bom)。不能r2dbc-bom.version再用于覆盖 R2DBC 的版本。取而代之的是,现在可以使用几个单独和单独版本化模块的新属性:

  • oracle-r2dbc.versioncom.oracle.database.r2dbc:oracle-r2dbc)
  • r2dbc-h2.versionio.r2dc:r2dbc-h2)
  • r2dbc-pool.versionio.r2dc:r2dbc-pool)
  • r2dbc-postgres.versionio.r2dc:r2dbc-postgres)
  • r2dbc-proxy.versionio.r2dc:r2dbc-proxy)
  • r2dbc-spi.versionio.r2dc:r2dbc-spi)

Elasticsearch 客户端和模板

已删除对 Elasticsearch 高级 REST 客户端的支持。取而代之的是,引入了 Elasticsearch 的新 Java 客户端的自动配置。同样,对构建在高级 REST 客户端之上的 Spring Data Elasticsearch 模板的支持已被删除。取而代之的是,引入了基于新 Java 客户端构建的新模板的自动配置。有关详细信息,请参阅参考文档的 Elasticsearch 部分。

ReactiveElasticsearchRestClientAutoConfiguration已重命名为ReactiveElasticsearchClientAutoConfiguration并从org.springframework.boot.autoconfigure.data.elasticsearch移至org.springframework.boot.autoconfigure.elasticsearch。应相应地更新任何自动配置排除或排序。

MySQL JDBC 驱动程序

MySQL JDBC 驱动程序的坐标已从 更改mysql:mysql-connector-javacom.mysql:mysql-connector-j。如果您使用的是 MySQL JDBC 驱动程序,请在升级到 Spring Boot 3.0 时相应地更新其坐标。

Spring Security 改变

Spring Boot 3.0 升级到 Spring Security 6.0。除了以下部分之外,请查看Spring Security 6.0 迁移指南。

ReactiveUserDetails服务

在存在 . 的情况下ReactiveUserDetailsService不再自动配置A。AuthenticationManagerResolver如果您的应用程序依赖于ReactiveUserDetailService尽管存在AuthenticationManagerResolver,请定义您自己的ReactiveUserDetailsServicebean 来满足它的需要。

SAML2 依赖方配置

对以下属性的支持spring.security.saml2.relyingparty.registration.{id}.identity-provider已被删除。使用下面的新属性spring.security.saml2.relyingparty.registration.{id}.asserting-party作为替代。

Spring Batch更改

Spring Boot 3.0 升级到 Spring Batch 5.0。除了以下部分之外,请查看Spring Batch 5.0 迁移指南。

@EnableBatchProcessing 现在不鼓励

以前,@EnableBatchProcessing可用于启用 Spring Boot 的 Spring Batch 自动配置。它不再需要,应该从想要使用 Boot 的自动配置的应用程序中删除。现在可以定义使用 Batch 注释@EnableBatchProcessing或扩展 Batch 的 beanDefaultBatchConfiguration来告诉自动配置后退,从而允许应用程序完全控制 Batch 的配置方式。

多个批处理作业

不再支持运行多个批处理作业。如果自动配置检测到单个作业,它将在启动时执行。如果在上下文中找到多个作业,则必须由用户使用该属性提供要在启动时执行的作业名称spring.batch.job.name

Spring Session变化

以下部分将与 Spring Session 用户相关。

Spring Session store-type

spring.session.store-type不再支持通过显式配置 Spring 会话的存储类型。如果在类路径上检测到多个会话存储存储库实现,将使用固定顺序SessionRepository来确定应自动配置哪些。如果 Spring Boot 定义的顺序不能满足您的需求,您可以定义自己的 SessionRepository bean 并导致自动配置退出。

Gradle变化

使用 Gradle 构建 Spring Boot 项目的用户应查看以下部分。

使用 Gradle 简化主类名称解析

使用 Gradle 构建应用程序时,应用程序主类名称的解析已得到简化并保持一致。 bootJarbootRun,bootWar现在都通过在主源集的输出中查找来解析主类名的名称。这消除了一个小风险,即默认情况下任务可能没有使用相同的主类名称。如果您依赖从主源集输出之外的位置解析的主类,请更新您的 Gradle 配置以使用DSLmainClass的属性配置主类名称springBoot

springBoot { 
    mainClass = "com.example.Application" 
}

或者,您可以将任务classpath的属性配置resolveMainClassName为在主源集输出目录以外的位置进行搜索。

配置 Gradle 任务

Spring Boot 的 Gradle 任务已更新为始终使用 GradleProperty对其配置的支持。因此,您可能需要更改引用属性值的方式。例如,现在可以使用 访问imageName属性 on的值。此外,如果您使用的是 Kotlin DSL,您可能需要更改设置属性的方式。例如,在 Spring Boot 2.x 中,可以按如下方式禁用任务分层:bootBuildImage``imageName.get()``bootJar

tasks.named<BootJar>("bootJar") {
	layered {
		isEnabled = false
	}
}

在 3.0 中,必须使用以下内容:

tasks.named<BootJar>("bootJar") {
	layered {
		enabled.set(false)
	}
}

请参阅Gradle 插件的参考文档以获取更多示例。

使用 Gradle 从“build-info.properties”中排除属性

作为前面描述的配置 Gradle 任务更改的一部分,从生成的文件中排除属性的机制build-info.properties也发生了变化。以前,可以通过将属性设置为 来排除属性null。这不再有效,并已被基于名称的机制所取代:

springBoot {
	buildInfo {
		excludes = ['time']
	}
}

Gradle Kotlin DSL 中的等价物如下:

springBoot {
	buildInfo {
		excludes.set(setOf("time"))
	}
}

Maven 的变化

使用 Maven 构建 Spring Boot 项目的用户应查看以下部分。

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

在 Spring Boot 2.7 中弃用的和fork的属性已被删除。spring-boot:run``spring-boot:start

Git 提交 ID Maven 插件

Git Commit ID Maven 插件已更新到版本 5,其坐标已更改。之前的坐标是pl.project13.maven:git-commit-id-plugin. 新坐标是io.github.git-commit-id:git-commit-id-maven-plugin<plugin>您文件中的任何声明pom.xml都应相应更新。

依赖管理变化

对 Spring Boot 管理的依赖项进行了以下更改。

JSON-B

Apache Johnzon 的依赖管理已被移除以支持 Eclipse Yasson。Jakarta EE 10 兼容版本的 Apache Johnzon 可以与 Spring Boot 3 一起使用,但您现在必须在依赖声明中指定一个版本。

ANTLR 2(蚂蚁金服2)

ANTLR 2 ( antlr:antlr) 的依赖管理已被删除,因为它不再需要。如果您在应用程序中使用 ANTLR 2,请指定满足您需要的版本。

RxJava

删除了 RxJava 1.x 和 2.x 的依赖管理,并添加了 RxJava 3 的依赖管理。

Hazelcast 休眠已删除

Spring Boot 不依赖于 Hazelcast Hibernate,因此它不需要对其版本有意见。因此,Hazelcast Hibernate 的依赖管理已被删除。如果您希望继续使用 Hazelcast Hibernate,请指定满足您需要的版本。或者,考虑org.hibernate.orm:hibernate-jcache改为使用。

缓存3

为了支持 Jakarta EE 9 及更高版本,Ehcacheehcacheehcache-transactions模块的依赖管理现在使用jakarta分类器声明。pom.xml您或脚本中的依赖声明build.gradle也应该进行类似的更新。

其他搬迁

Spring Boot 3.0 中删除了对以下依赖项的支持:

  • Apache ActiveMQ
  • Atomikos
  • EhCache 2
  • Hazelcast 3

已删除对 Apache Solr 的支持,因为其基于 Jetty 的客户端Http2SolrClient与 Jetty 11 不兼容。

猜你喜欢

转载自blog.csdn.net/weixin_46894136/article/details/130028426