Skip to content

Commit fc67e44

Browse files
committed
Merge pull request #15842 from Raheela Aslam
* gh-15842: Polish "Make auto-config of RestTemplate metrics back off with no builder bean" Make auto-config of RestTemplate metrics back off with no builder bean Closes gh-15842
2 parents 48e7811 + 22192c2 commit fc67e44

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/HttpClientMetricsAutoConfiguration.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2018 the original author or authors.
2+
* Copyright 2012-2019 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -27,6 +27,7 @@
2727
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2828
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
2929
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
30+
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
3031
import org.springframework.context.annotation.Bean;
3132
import org.springframework.context.annotation.Configuration;
3233
import org.springframework.context.annotation.Import;
@@ -38,11 +39,12 @@
3839
* @author Jon Schneider
3940
* @author Phillip Webb
4041
* @author Stephane Nicoll
42+
* @author Raheela Aslam
4143
* @since 2.1.0
4244
*/
4345
@Configuration
4446
@AutoConfigureAfter({ MetricsAutoConfiguration.class,
45-
SimpleMetricsExportAutoConfiguration.class })
47+
SimpleMetricsExportAutoConfiguration.class, RestTemplateAutoConfiguration.class })
4648
@ConditionalOnClass(MeterRegistry.class)
4749
@ConditionalOnBean(MeterRegistry.class)
4850
@Import({ RestTemplateMetricsConfiguration.class, WebClientMetricsConfiguration.class })

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/RestTemplateMetricsConfiguration.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@
2222
import org.springframework.boot.actuate.metrics.web.client.DefaultRestTemplateExchangeTagsProvider;
2323
import org.springframework.boot.actuate.metrics.web.client.MetricsRestTemplateCustomizer;
2424
import org.springframework.boot.actuate.metrics.web.client.RestTemplateExchangeTagsProvider;
25+
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
2526
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2627
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
28+
import org.springframework.boot.web.client.RestTemplateBuilder;
2729
import org.springframework.context.annotation.Bean;
2830
import org.springframework.context.annotation.Configuration;
2931
import org.springframework.web.client.RestTemplate;
@@ -33,9 +35,11 @@
3335
*
3436
* @author Jon Schneider
3537
* @author Phillip Webb
38+
* @author Raheela Aslam
3639
*/
3740
@Configuration
3841
@ConditionalOnClass(RestTemplate.class)
42+
@ConditionalOnBean(RestTemplateBuilder.class)
3943
class RestTemplateMetricsConfiguration {
4044

4145
private final MetricsProperties properties;

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/RestTemplateMetricsConfigurationTests.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.junit.Test;
2222

2323
import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun;
24+
import org.springframework.boot.actuate.metrics.web.client.DefaultRestTemplateExchangeTagsProvider;
2425
import org.springframework.boot.actuate.metrics.web.client.MetricsRestTemplateCustomizer;
2526
import org.springframework.boot.autoconfigure.AutoConfigurations;
2627
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
@@ -41,6 +42,7 @@
4142
*
4243
* @author Stephane Nicoll
4344
* @author Jon Schneider
45+
* @author Raheela Aslam
4446
*/
4547
public class RestTemplateMetricsConfigurationTests {
4648

@@ -98,6 +100,16 @@ public void shouldNotDenyNorLogIfMaxUrisIsNotReached() {
98100
});
99101
}
100102

103+
@Test
104+
public void backsOffWhenRestTemplateBuilderIsMissing() {
105+
new ApplicationContextRunner().with(MetricsRun.simple())
106+
.withConfiguration(
107+
AutoConfigurations.of(HttpClientMetricsAutoConfiguration.class))
108+
.run((context) -> assertThat(context)
109+
.doesNotHaveBean(DefaultRestTemplateExchangeTagsProvider.class)
110+
.doesNotHaveBean(MetricsRestTemplateCustomizer.class));
111+
}
112+
101113
private MeterRegistry getInitializedMeterRegistry(
102114
AssertableApplicationContext context) {
103115
MeterRegistry registry = context.getBean(MeterRegistry.class);

0 commit comments

Comments
 (0)