diff --git a/spring-cloud-sleuth-stream/pom.xml b/spring-cloud-sleuth-stream/pom.xml
index 3b9179c5c..d8e322442 100644
--- a/spring-cloud-sleuth-stream/pom.xml
+++ b/spring-cloud-sleuth-stream/pom.xml
@@ -28,6 +28,11 @@
org.springframework.cloud
spring-cloud-commons
+
+ org.springframework.cloud
+ spring-cloud-context
+ true
+
org.springframework.boot
spring-boot-starter-aop
diff --git a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthStreamAutoConfiguration.java b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthStreamAutoConfiguration.java
index 82bef4969..7d04f2adc 100644
--- a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthStreamAutoConfiguration.java
+++ b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthStreamAutoConfiguration.java
@@ -24,6 +24,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.integration.IntegrationAutoConfiguration;
import org.springframework.boot.autoconfigure.web.ServerProperties;
@@ -31,6 +32,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.client.serviceregistry.Registration;
import org.springframework.cloud.commons.util.InetUtils;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.cloud.sleuth.Sampler;
import org.springframework.cloud.sleuth.SpanAdjuster;
import org.springframework.cloud.sleuth.autoconfig.TraceAutoConfiguration;
@@ -71,10 +73,25 @@ public class SleuthStreamAutoConfiguration {
@Autowired(required = false) List spanAdjusters = new ArrayList<>();
- @Bean
- @ConditionalOnMissingBean
- public Sampler defaultTraceSampler(SamplerProperties config) {
- return new PercentageBasedSampler(config);
+ @Configuration
+ @ConditionalOnClass(RefreshScope.class)
+ protected static class RefreshScopedPercentageBasedSamplerConfiguration {
+ @Bean
+ @RefreshScope
+ @ConditionalOnMissingBean
+ public Sampler defaultTraceSampler(SamplerProperties config) {
+ return new PercentageBasedSampler(config);
+ }
+ }
+
+ @Configuration
+ @ConditionalOnMissingClass("org.springframework.cloud.context.config.annotation.RefreshScope")
+ protected static class NonRefreshScopePercentageBasedSamplerConfiguration {
+ @Bean
+ @ConditionalOnMissingBean
+ public Sampler defaultTraceSampler(SamplerProperties config) {
+ return new PercentageBasedSampler(config);
+ }
}
@Bean
diff --git a/spring-cloud-sleuth-zipkin/pom.xml b/spring-cloud-sleuth-zipkin/pom.xml
index a88614bee..dd5e7561c 100644
--- a/spring-cloud-sleuth-zipkin/pom.xml
+++ b/spring-cloud-sleuth-zipkin/pom.xml
@@ -45,6 +45,11 @@
org.springframework.cloud
spring-cloud-commons
+
+ org.springframework.cloud
+ spring-cloud-context
+ true
+
org.springframework.boot
spring-boot-actuator
diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinAutoConfiguration.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinAutoConfiguration.java
index 5b3b8a314..272d58b29 100644
--- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinAutoConfiguration.java
+++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinAutoConfiguration.java
@@ -35,6 +35,7 @@ import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.client.serviceregistry.Registration;
import org.springframework.cloud.commons.util.InetUtils;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.cloud.sleuth.Sampler;
import org.springframework.cloud.sleuth.SpanAdjuster;
import org.springframework.cloud.sleuth.SpanReporter;
@@ -136,10 +137,25 @@ public class ZipkinAutoConfiguration {
return new DefaultZipkinRestTemplateCustomizer(zipkinProperties);
}
- @Bean
- @ConditionalOnMissingBean
- public Sampler defaultTraceSampler(SamplerProperties config) {
- return new PercentageBasedSampler(config);
+ @Configuration
+ @ConditionalOnClass(RefreshScope.class)
+ protected static class RefreshScopedPercentageBasedSamplerConfiguration {
+ @Bean
+ @RefreshScope
+ @ConditionalOnMissingBean
+ public Sampler defaultTraceSampler(SamplerProperties config) {
+ return new PercentageBasedSampler(config);
+ }
+ }
+
+ @Configuration
+ @ConditionalOnMissingClass("org.springframework.cloud.context.config.annotation.RefreshScope")
+ protected static class NonRefreshScopePercentageBasedSamplerConfiguration {
+ @Bean
+ @ConditionalOnMissingBean
+ public Sampler defaultTraceSampler(SamplerProperties config) {
+ return new PercentageBasedSampler(config);
+ }
}
@Bean
diff --git a/spring-cloud-sleuth-zipkin2/pom.xml b/spring-cloud-sleuth-zipkin2/pom.xml
index 9f8ea167b..7266dc776 100644
--- a/spring-cloud-sleuth-zipkin2/pom.xml
+++ b/spring-cloud-sleuth-zipkin2/pom.xml
@@ -45,6 +45,11 @@
org.springframework.cloud
spring-cloud-commons
+
+ org.springframework.cloud
+ spring-cloud-context
+ true
+
org.springframework.boot
spring-boot-actuator
diff --git a/spring-cloud-sleuth-zipkin2/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfiguration.java b/spring-cloud-sleuth-zipkin2/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfiguration.java
index 45eb9ddc9..2c64bb7f4 100644
--- a/spring-cloud-sleuth-zipkin2/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfiguration.java
+++ b/spring-cloud-sleuth-zipkin2/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfiguration.java
@@ -19,15 +19,18 @@ package org.springframework.cloud.sleuth.zipkin2;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.client.serviceregistry.Registration;
import org.springframework.cloud.commons.util.InetUtils;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.cloud.sleuth.Sampler;
import org.springframework.cloud.sleuth.SpanAdjuster;
import org.springframework.cloud.sleuth.SpanReporter;
@@ -95,10 +98,25 @@ public class ZipkinAutoConfiguration {
return new DefaultZipkinRestTemplateCustomizer(zipkinProperties);
}
- @Bean
- @ConditionalOnMissingBean
- public Sampler defaultTraceSampler(SamplerProperties config) {
- return new PercentageBasedSampler(config);
+ @Configuration
+ @ConditionalOnClass(RefreshScope.class)
+ protected static class RefreshScopedPercentageBasedSamplerConfiguration {
+ @Bean
+ @RefreshScope
+ @ConditionalOnMissingBean
+ public Sampler defaultTraceSampler(SamplerProperties config) {
+ return new PercentageBasedSampler(config);
+ }
+ }
+
+ @Configuration
+ @ConditionalOnMissingClass("org.springframework.cloud.context.config.annotation.RefreshScope")
+ protected static class NonRefreshScopePercentageBasedSamplerConfiguration {
+ @Bean
+ @ConditionalOnMissingBean
+ public Sampler defaultTraceSampler(SamplerProperties config) {
+ return new PercentageBasedSampler(config);
+ }
}
@Bean