From 109edeb2b7ccdc9caf897019b08934b933792af3 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Wed, 21 Mar 2018 12:16:50 +0100 Subject: [PATCH] Reusing object instead of calling bean factory to retrieve it; fixes gh-905 --- .../cloud/sleuth/annotation/SleuthAdvisorConfig.java | 2 +- .../instrument/reactor/SpanSubscriptionProvider.java | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) 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; + } }