Spring Boot 3升级后Spring Cloud Sleuth的Tracer Bean缺失问题咨询
Spring Boot 3升级后Sleuth Tracer Bean缺失问题
问题根源
你使用的spring-cloud-starter-sleuth:3.1.5是适配Spring Boot 2.6/2.7的版本,和Spring Boot 3.x完全不兼容。Spring Boot 3对应的Spring Cloud 2022.0.x版本周期中,Spring Cloud Sleuth已停止主动开发,原有的自动配置逻辑无法正常加载,因此Tracer Bean不会被默认创建。
解决办法
1. 转用OpenTelemetry(官方推荐)
Spring官方已将分布式追踪能力的支持迁移到OpenTelemetry,这是长期维护的方案。先移除Sleuth依赖,替换为OpenTelemetry相关依赖:
// 移除旧的Sleuth依赖 // implementation 'org.springframework.cloud:spring-cloud-starter-sleuth:3.1.5' // 添加OpenTelemetry相关依赖 implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'io.opentelemetry:opentelemetry-api' implementation 'io.opentelemetry:opentelemetry-sdk' implementation 'io.opentelemetry.instrumentation:opentelemetry-spring-boot-starter'
获取TraceId和SpanId的逻辑与之前类似,仅Tracer的包路径变更:
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Span; @Service public class LogService { private final Tracer tracer; public LogService(Tracer tracer) { this.tracer = tracer; } public void logTraceInfo() { Span currentSpan = Span.current(); String traceId = currentSpan.getSpanContext().getTraceId(); String spanId = currentSpan.getSpanContext().getSpanId(); // 业务日志输出或逻辑使用 } }
2. 使用Sleuth临时过渡版本(不推荐)
如果暂时无法重构代码,可以尝试社区维护的最后一个适配Spring Boot3的Sleuth里程碑版本,但该版本无官方支持,后续存在风险:
implementation 'org.springframework.cloud:spring-cloud-starter-sleuth:3.2.0-M1'
使用此版本时,原有org.springframework.cloud.sleuth.Tracer的注入逻辑无需修改,自动配置会恢复Tracer Bean的创建。
注意事项
Spring Cloud Sleuth从3.1.x版本后正式进入维护状态,不再新增功能,官方明确推荐迁移到OpenTelemetry以获得长期支持和更丰富的追踪能力。
内容的提问来源于stack exchange,提问作者cloud_7
相关产品推荐
相关产品推荐

