Spring Cloud Sleuth的TracingFilter已弃用,求MockMvc注入的替代方案
方案说明
场景1:使用Spring Cloud Sleuth 3.x版本
TracingFilter的直接替代类为TraceFilter,替换注入类即可,用法和原逻辑完全一致:
@Autowired private TraceFilter traceFilter; @BeforeAll void init() throws IOException, URISyntaxException { this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context).apply(springSecurity()) .addFilters(this.traceFilter) .build(); }
场景2:已升级至Spring Boot 3.x + Micrometer Tracing(Spring Cloud Sleuth已停止维护并入Micrometer项目)
链路追踪对应的Filter为ServerHttpObservationFilter,直接注入使用即可:
@Autowired private ServerHttpObservationFilter tracingFilter; @BeforeAll void init() throws IOException, URISyntaxException { this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context).apply(springSecurity()) .addFilters(this.tracingFilter) .build(); }
注意事项
如果启动时提示找不到对应Filter的Bean,需要确认已引入对应链路追踪的starter依赖:
- Sleuth场景需要引入
spring-cloud-starter-sleuth - Micrometer Tracing场景需要引入
micrometer-tracing-starter及对应桥接依赖(如micrometer-tracing-bridge-brave),自动配置才会注册对应的Filter到Spring容器中。
内容的提问来源于stack exchange,提问作者Jonathan Chevalier
相关产品推荐
相关产品推荐

