Hola, estoy usando el marco de seguimiento a continuación en mi proyecto de arranque de primavera.
<dependency> <groupId>io.opentracing.contrib</groupId> <artifactId>opentracing-spring-jaeger-cloud-starter</artifactId> <version>3.3.1</version> </dependency>Recibo la siguiente excepción cuando inicio mi aplicación.
┌─────┐ | org.springframework.cloud.netflix.zuul.ZuulProxyAutoConfiguration (field private java.util.List org.springframework.cloud.netflix.zuul.ZuulServerAutoConfiguration.configurers) ↑ ↓ | io.opentracing.contrib.spring.web.starter.ServerTracingAutoConfiguration (field private java.util.regex.Pattern io.opentracing.contrib.spring.web.starter.ServerTracingAutoConfiguration.skipPattern) ↑ ↓ | skipPattern defined in class path resource [io/opentracing/contrib/spring/web/starter/SkipPatternAutoConfiguration.class] ↑ ↓ | org.springframework.cloud.client.CommonsClientAutoConfiguration$ActuatorConfiguration (field private java.util.List org.springframework.cloud.client.CommonsClientAutoConfiguration$ActuatorConfiguration.hasFeatures) └─────┘Puedo deshacerme del error colocando el siguiente atributo en mi archivo application.yml. Sin embargo, no sé el impacto de esta bandera. ¿Alguien puede arrojar algo de luz sobre la consecuencia de esta configuración?
spring: web: ignoreAutoConfiguredSkipPatterns: trueLa propiedad ignoreAutoConfiguredSkipPatterns es responsable de generar el valor skipPattern en TracingFilter . Cuando ignoreAutoConfiguredSkipPatterns es false o no está configurado, el valor de skipPattern contendrá un patrón de expresión regular para excluir ciertas rutas del seguimiento (por ejemplo, el patrón se define como /health|/status entonces la URL http://localhost:5000/context/health no se rastreará ). Si ignoreAutoConfiguredSkipPatterns es true , entonces el valor de skipPattern será null , luego la solicitud se rastreará en TracingFilter
PD En cuanto a mí, el problema está relacionado con el indicador spring.cloud.features.enabled , ese indicador está habilitado de forma predeterminada y, como resultado, el campo hasFeatures crea una dependencia circular, verifique el código a continuación:
@Configuration(proxyBeanMethods = false) public class CommonsClientAutoConfiguration { ... @Configuration(proxyBeanMethods = false) @ConditionalOnClass(Endpoint.class) @ConditionalOnProperty(value = "spring.cloud.features.enabled", matchIfMissing = true) protected static class ActuatorConfiguration { @Autowired(required = false) private List<HasFeatures> hasFeatures = new ArrayList<>(); @Bean @ConditionalOnAvailableEndpoint public FeaturesEndpoint featuresEndpoint() { return new FeaturesEndpoint(this.hasFeatures); } } ... }