diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignAspect.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignAspect.java index 829decdbb..76a476ad7 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignAspect.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignAspect.java @@ -44,7 +44,8 @@ class TraceFeignAspect { @Around("execution (* feign.Client.*(..)) && !within(is(FinalType))") public Object feignClientWasCalled(final ProceedingJoinPoint pjp) throws Throwable { Object bean = pjp.getTarget(); - if (!(bean instanceof TraceFeignClient) && !(bean instanceof TraceLoadBalancerFeignClient)) { + Object wrappedBean = new TraceFeignObjectWrapper(this.beanFactory).wrap(bean); + if (bean != wrappedBean) { return executeTraceFeignClient(bean, pjp); } return pjp.proceed(); @@ -54,6 +55,6 @@ class TraceFeignAspect { Object[] args = pjp.getArgs(); Request request = (Request) args[0]; Request.Options options = (Request.Options) args[1]; - return new TraceFeignClient(this.beanFactory, (Client) bean).execute(request, options); + return ((Client) bean).execute(request, options); } }