Commit 465582d2 by Bertrand Renuart Committed by Spencer Gibb

Make sure MetricsRestTemplateAspectConfiguration is applied in time.

`MetricsRestTemplateConfiguration` creates a BeanPostProcessor used to configure RestTemplate instances when added to the application context. It should be made @ConditionalOnClass(RestTemplate) instead of @ConditionalOnBean(RestTemplate) since it should be present *before* any RestTemplate bean instance is created. (#1747) fixes gh-1153
parent fae60e9f
......@@ -14,13 +14,15 @@
package org.springframework.cloud.netflix.metrics;
import java.util.ArrayList;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import org.aspectj.lang.JoinPoint;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.boot.actuate.metrics.reader.MetricReader;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
......@@ -34,10 +36,9 @@ import org.springframework.web.client.RestTemplate;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.netflix.servo.MonitorRegistry;
import com.netflix.servo.monitor.Monitors;
import java.util.Collection;
/**
* @author Jon Schneider
*/
......@@ -62,9 +63,8 @@ public class MetricsInterceptorConfiguration {
}
@Configuration
@ConditionalOnClass(JoinPoint.class)
@ConditionalOnClass({ RestTemplate.class, JoinPoint.class })
@ConditionalOnProperty(value = "spring.aop.enabled", havingValue = "true", matchIfMissing = true)
@ConditionalOnBean({ RestTemplate.class })
static class MetricsRestTemplateAspectConfiguration {
@Bean
......@@ -75,8 +75,7 @@ public class MetricsInterceptorConfiguration {
}
@Configuration
@ConditionalOnBean({ RestTemplate.class })
@ConditionalOnClass(name = "javax.servlet.http.HttpServletRequest")
@ConditionalOnClass({ RestTemplate.class, HttpServletRequest.class }) // HttpServletRequest implicitly required by MetricsTagProvider
static class MetricsRestTemplateConfiguration {
@Value("${netflix.metrics.restClient.metricName:restclient}")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment