You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring 3.0升级后启动失败:缺失brave.Tracing Bean求助

解决Spring 3.0升级后找不到brave.Tracing Bean的问题

1. 修正依赖版本与结构

Spring Boot 3.x 对Micrometer Tracing的依赖管理更推荐通过starter统一版本,避免手动指定版本导致的兼容性问题。替换你当前的pom依赖为:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing-bridge-brave</artifactId>
</dependency>
<dependency>
    <groupId>io.zipkin.reporter2</groupId>
    <artifactId>zipkin-reporter-brave</artifactId>
</dependency>
  • 移除手动指定的micrometer-tracing依赖,micrometer-tracing-bridge-brave已包含该依赖
  • 引入spring-boot-starter-actuator后,Spring Boot会自动管理所有相关依赖的版本,适配Spring 3.x环境

2. 修复application.yml配置错误

你的配置存在缩进错误和路径错误,修正后如下:

management:
  tracing:
    sampling:
      probability: 1.0
      enabled: true  # 必须启用追踪,否则Spring不会创建Tracing相关Bean
  zipkin:
    endpoint: "my endpoint url"  # 修正配置路径,Spring Boot 3.x中Zipkin端点的正确路径是management.zipkin.endpoint
  • 注意enabled字段的缩进,需与probability同级
  • 将enabled设为true,关闭状态下不会生成Tracing相关Bean

3. 优化代码中的Bean注入

方案一:推荐使用Tracer API(符合Micrometer Tracing规范)

Micrometer Tracing推荐直接注入Tracer而非底层的brave.Tracing,它是更上层的标准API,Spring自动配置会默认提供该Bean:

import io.micrometer.tracing.Tracer;
import org.springframework.stereotype.Service;

@Service
public class MockServiceImpl implements MockService {
    public static final String Y = "Y";
    private final Tracer tracer;
    private final ScenarioRunner scenarioRunner;
    private final ObjectMapper objectMapper;

    // Spring 3.x推荐构造器注入,避免字段注入的弊端
    public MockServiceImpl(Tracer tracer, ScenarioRunner scenarioRunner, ObjectMapper objectMapper) {
        this.tracer = tracer;
        this.scenarioRunner = scenarioRunner;
        this.objectMapper = objectMapper;
    }

    public void publishMockOutput(Message<GenericRecord> msg, MockInfo info) {
        String scenarioId = tracer.currentSpan().context().traceId();
    }
}

方案二:若必须使用brave.Tracing

如果业务确实需要直接使用brave.Tracing,可以手动配置Bean:

import brave.Tracing;
import io.micrometer.tracing.brave.bridge.BraveTracer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TracingConfig {
    @Bean
    public Tracing tracing(BraveTracer braveTracer) {
        return braveTracer.getBraveTracer().tracing();
    }
}

配置完成后即可在Service中正常注入Tracing,但仍优先推荐方案一的标准API,兼容性更强。

内容的提问来源于stack exchange,提问作者Madhavi vasantala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 09:43:14