diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/annotation/SleuthAdvisorConfig.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/annotation/SleuthAdvisorConfig.java index ae9c5bbd7..e12b65f79 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/annotation/SleuthAdvisorConfig.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/annotation/SleuthAdvisorConfig.java @@ -50,7 +50,7 @@ import org.springframework.util.StringUtils; * @since 1.2.0 */ @SuppressWarnings("serial") -class SleuthAdvisorConfig extends AbstractPointcutAdvisor implements BeanFactoryAware { +class SleuthAdvisorConfig extends AbstractPointcutAdvisor implements BeanFactoryAware { private Advice advice; diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/SpanSubscriptionProvider.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/SpanSubscriptionProvider.java index 16971012d..5baf67e2c 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/SpanSubscriptionProvider.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/SpanSubscriptionProvider.java @@ -34,6 +34,7 @@ class SpanSubscriptionProvider implements Supplier> { final Subscriber subscriber; final Context context; final String name; + private Tracing tracing; SpanSubscriptionProvider(BeanFactory beanFactory, Subscriber subscriber, @@ -45,11 +46,17 @@ class SpanSubscriptionProvider implements Supplier> { } @Override public SpanSubscription get() { - Tracing tracing = this.beanFactory.getBean(Tracing.class); - return newCoreSubscriber(tracing); + return newCoreSubscriber(tracing()); } SpanSubscription newCoreSubscriber(Tracing tracing) { return new SpanSubscriber<>(this.subscriber, this.context, tracing, this.name); } + + private Tracing tracing() { + if (this.tracing == null) { + this.tracing = this.beanFactory.getBean(Tracing.class); + } + return this.tracing; + } }