bean 'spring.sleuth.baggage-keys' 已经定义

Posted

技术标签:

【中文标题】bean \'spring.sleuth.baggage-keys\' 已经定义【英文标题】:bean 'spring.sleuth.baggage-keys' already definedbean 'spring.sleuth.baggage-keys' 已经定义 【发布时间】:2021-12-27 20:20:04 【问题描述】:

我正在将应用程序从 Spring Boot 1.x 升级到 Spring Boot 2.x。当我尝试运行现有的(和以前工作的)单元测试时,我看到了以下输出:

***************************
APPLICATION FAILED TO START
***************************

Description:

The bean 'spring.sleuth.baggage-keys', defined in class path resource [org/springframework/cloud/sleuth/autoconfig/brave/BraveBaggageConfiguration.class], could not be registered. A bean with that name has already been defined in class path resource [org/springframework/cloud/sleuth/autoconfig/TraceBaggageConfiguration.class] and overriding is disabled.

Action:

Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

我的 Gradle 项目使用以下实现:'org.springframework.cloud:spring-cloud-sleuth-core:2.2.8.RELEASE'

我尝试检查 the Gradle dependencies task 以确保 spring-cloud-sleuth-core 和朋友的版本没有冲突。我还查看了this post 和this post,但它们并没有解决我的问题。

我需要避免覆盖 bean,我目前的部署目标仅限于 Spring Boot 2.4.x。

【问题讨论】:

【参考方案1】:

检查compatibility matrix,您应该将 Spring Cloud 2020.0.x aka Ilford (Sleuth 3.x) 与 Spring Boot 2.4(或 2.5)一起使用。

Sleuth 2.2.8 是 Spring Cloud Hoxton,它与 Boot 2.4 不兼容。

【讨论】:

以上是关于bean 'spring.sleuth.baggage-keys' 已经定义的主要内容,如果未能解决你的问题,请参考以下文章

Spring系列bean的高级配置

Spring学习笔记6---bean配置和bean注入

Bean之间的关系

bean之间的继承和依赖关系

spring 配置bean 怎么使用

Spring学习--引用其他Bean , 内部Bean