package com.iailab.framework.tracer.config; import com.iailab.framework.common.enums.WebFilterOrderEnum; import com.iailab.framework.tracer.core.aop.BizTraceAspect; import com.iailab.framework.tracer.core.filter.TraceFilter; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; /** * Tracer 配置类 * * @author mashu */ @AutoConfiguration @ConditionalOnClass({BizTraceAspect.class}) @EnableConfigurationProperties(TracerProperties.class) @ConditionalOnProperty(prefix = "iailab.tracer", value = "enable", matchIfMissing = true) public class IailabTracerAutoConfiguration { // TODO @iailab:重要。目前 opentracing 版本存在冲突,要么保证 skywalking,要么保证阿里云短信 sdk // @Bean // public TracerProperties bizTracerProperties() { // return new TracerProperties(); // } // // @Bean // public BizTraceAspect bizTracingAop() { // return new BizTraceAspect(tracer()); // } // // @Bean // public Tracer tracer() { // // 创建 SkywalkingTracer 对象 // SkywalkingTracer tracer = new SkywalkingTracer(); // // 设置为 GlobalTracer 的追踪器 // GlobalTracer.register(tracer); // return tracer; // } /** * 创建 TraceFilter 过滤器,响应 header 设置 traceId */ @Bean public FilterRegistrationBean traceFilter() { FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); registrationBean.setFilter(new TraceFilter()); registrationBean.setOrder(WebFilterOrderEnum.TRACE_FILTER); return registrationBean; } }