From 02b7ec787e9674411efbefed18ad27660e11779a Mon Sep 17 00:00:00 2001 From: Martin Benda Date: Sun, 26 Apr 2020 15:43:09 +0200 Subject: [PATCH] Order metrics auto-configurations correctly Update metrics auto-configurations so that they are auto-configured after `CompositeMeterRegistryAutoConfiguration` in order to ensure the `MeterRegistry` bean has been defined. Prior to this commit, metrics auto-configurations that depended on a `MeterRegistry` has `@AutoConfigureAfter(MetricsAutoConfiguration.class)` which is not sufficient since `MetricsAutoConfiguration` does not export a `MeterRegistry`. See gh-21134 --- .../autoconfigure/metrics/JvmMetricsAutoConfiguration.java | 2 +- .../autoconfigure/metrics/KafkaMetricsAutoConfiguration.java | 2 +- .../autoconfigure/metrics/Log4J2MetricsAutoConfiguration.java | 2 +- .../autoconfigure/metrics/LogbackMetricsAutoConfiguration.java | 2 +- .../autoconfigure/metrics/SystemMetricsAutoConfiguration.java | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfiguration.java index 98f50edf1d..2983a87864 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/JvmMetricsAutoConfiguration.java @@ -37,7 +37,7 @@ import org.springframework.context.annotation.Configuration; * @since 2.1.0 */ @Configuration(proxyBeanMethods = false) -@AutoConfigureAfter(MetricsAutoConfiguration.class) +@AutoConfigureAfter(CompositeMeterRegistryAutoConfiguration.class) @ConditionalOnClass(MeterRegistry.class) @ConditionalOnBean(MeterRegistry.class) public class JvmMetricsAutoConfiguration { diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/KafkaMetricsAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/KafkaMetricsAutoConfiguration.java index f2bbcfe6e1..8dba670ba5 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/KafkaMetricsAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/KafkaMetricsAutoConfiguration.java @@ -39,7 +39,7 @@ import org.springframework.context.annotation.Configuration; * @since 2.1.0 */ @Configuration(proxyBeanMethods = false) -@AutoConfigureAfter({ MetricsAutoConfiguration.class, JmxAutoConfiguration.class }) +@AutoConfigureAfter({ CompositeMeterRegistryAutoConfiguration.class, JmxAutoConfiguration.class }) @ConditionalOnClass({ KafkaConsumerMetrics.class, KafkaConsumer.class }) @ConditionalOnBean(MeterRegistry.class) public class KafkaMetricsAutoConfiguration { diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/Log4J2MetricsAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/Log4J2MetricsAutoConfiguration.java index b70fb3deee..1261913697 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/Log4J2MetricsAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/Log4J2MetricsAutoConfiguration.java @@ -41,7 +41,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata; * @since 2.1.0 */ @Configuration(proxyBeanMethods = false) -@AutoConfigureAfter(MetricsAutoConfiguration.class) +@AutoConfigureAfter(CompositeMeterRegistryAutoConfiguration.class) @ConditionalOnClass(value = { Log4j2Metrics.class, LogManager.class }, name = "org.apache.logging.log4j.core.LoggerContext") @ConditionalOnBean(MeterRegistry.class) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/LogbackMetricsAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/LogbackMetricsAutoConfiguration.java index 29402da029..5c0ee09da3 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/LogbackMetricsAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/LogbackMetricsAutoConfiguration.java @@ -44,7 +44,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata; * @since 2.1.0 */ @Configuration(proxyBeanMethods = false) -@AutoConfigureAfter(MetricsAutoConfiguration.class) +@AutoConfigureAfter(CompositeMeterRegistryAutoConfiguration.class) @ConditionalOnClass({ MeterRegistry.class, LoggerContext.class, LoggerFactory.class }) @ConditionalOnBean(MeterRegistry.class) @Conditional(LogbackLoggingCondition.class) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/SystemMetricsAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/SystemMetricsAutoConfiguration.java index 2723d0fcc1..9cc949cc19 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/SystemMetricsAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/SystemMetricsAutoConfiguration.java @@ -36,7 +36,7 @@ import org.springframework.context.annotation.Configuration; * @since 2.1.0 */ @Configuration(proxyBeanMethods = false) -@AutoConfigureAfter(MetricsAutoConfiguration.class) +@AutoConfigureAfter(CompositeMeterRegistryAutoConfiguration.class) @ConditionalOnClass(MeterRegistry.class) @ConditionalOnBean(MeterRegistry.class) public class SystemMetricsAutoConfiguration {