Skip to content

Commit 59693f2

Browse files
committed
Move "micrometer.observations.*" configuration properties
This commit moves the "micrometer.observations.*" configuration properties to "management.observations.*" namespace, as it was introduced in the wrong namespace initially. The former configuration property is deprecated and will be removed in a future version. Fixes gh-39600
1 parent d6d7082 commit 59693f2

File tree

7 files changed

+81
-10
lines changed

7 files changed

+81
-10
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAspectsAutoConfiguration.java

+22-1
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,16 @@
2323
import org.aspectj.weaver.Advice;
2424

2525
import org.springframework.beans.factory.ObjectProvider;
26+
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAspectsAutoConfiguration.ObservationAnnotationsEnabledCondition;
2627
import org.springframework.boot.autoconfigure.AutoConfiguration;
2728
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
29+
import org.springframework.boot.autoconfigure.condition.AnyNestedCondition;
2830
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
2931
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3032
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
3133
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
3234
import org.springframework.context.annotation.Bean;
35+
import org.springframework.context.annotation.Conditional;
3336

3437
/**
3538
* {@link EnableAutoConfiguration Auto-configuration} for Micrometer-based metrics
@@ -40,7 +43,7 @@
4043
*/
4144
@AutoConfiguration(after = { MetricsAutoConfiguration.class, CompositeMeterRegistryAutoConfiguration.class })
4245
@ConditionalOnClass({ MeterRegistry.class, Advice.class })
43-
@ConditionalOnProperty(prefix = "micrometer.observations.annotations", name = "enabled", havingValue = "true")
46+
@Conditional(ObservationAnnotationsEnabledCondition.class)
4447
@ConditionalOnBean(MeterRegistry.class)
4548
public class MetricsAspectsAutoConfiguration {
4649

@@ -59,4 +62,22 @@ TimedAspect timedAspect(MeterRegistry registry,
5962
return timedAspect;
6063
}
6164

65+
static final class ObservationAnnotationsEnabledCondition extends AnyNestedCondition {
66+
67+
ObservationAnnotationsEnabledCondition() {
68+
super(ConfigurationPhase.PARSE_CONFIGURATION);
69+
}
70+
71+
@ConditionalOnProperty(prefix = "micrometer.observations.annotations", name = "enabled", havingValue = "true")
72+
static class MicrometerObservationsEnabledCondition {
73+
74+
}
75+
76+
@ConditionalOnProperty(prefix = "management.observations.annotations", name = "enabled", havingValue = "true")
77+
static class ManagementObservationsEnabledCondition {
78+
79+
}
80+
81+
}
82+
6283
}

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/MicrometerTracingAutoConfiguration.java

+21-1
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,13 @@
3232
import org.springframework.beans.factory.ObjectProvider;
3333
import org.springframework.boot.autoconfigure.AutoConfiguration;
3434
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
35+
import org.springframework.boot.autoconfigure.condition.AnyNestedCondition;
3536
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
3637
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3738
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
3839
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
3940
import org.springframework.context.annotation.Bean;
41+
import org.springframework.context.annotation.Conditional;
4042
import org.springframework.context.annotation.Configuration;
4143
import org.springframework.core.Ordered;
4244
import org.springframework.core.annotation.Order;
@@ -97,7 +99,7 @@ public PropagatingReceiverTracingObservationHandler<?> propagatingReceiverTracin
9799

98100
@Configuration(proxyBeanMethods = false)
99101
@ConditionalOnClass(Advice.class)
100-
@ConditionalOnProperty(prefix = "micrometer.observations.annotations", name = "enabled", havingValue = "true")
102+
@Conditional(ObservationAnnotationsEnabledCondition.class)
101103
static class SpanAspectConfiguration {
102104

103105
@Bean
@@ -124,4 +126,22 @@ SpanAspect spanAspect(MethodInvocationProcessor methodInvocationProcessor) {
124126

125127
}
126128

129+
static final class ObservationAnnotationsEnabledCondition extends AnyNestedCondition {
130+
131+
ObservationAnnotationsEnabledCondition() {
132+
super(ConfigurationPhase.PARSE_CONFIGURATION);
133+
}
134+
135+
@ConditionalOnProperty(prefix = "micrometer.observations.annotations", name = "enabled", havingValue = "true")
136+
static class MicrometerObservationsEnabledCondition {
137+
138+
}
139+
140+
@ConditionalOnProperty(prefix = "management.observations.annotations", name = "enabled", havingValue = "true")
141+
static class ManagementObservationsEnabledCondition {
142+
143+
}
144+
145+
}
146+
127147
}

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json

+10-2
Original file line numberDiff line numberDiff line change
@@ -2073,6 +2073,12 @@
20732073
"level": "error"
20742074
}
20752075
},
2076+
{
2077+
"name": "management.observations.annotations.enabled",
2078+
"type": "java.lang.Boolean",
2079+
"description": "Whether auto-configuration of Micrometer annotations is enabled.",
2080+
"defaultValue": false
2081+
},
20762082
{
20772083
"name": "management.otlp.metrics.export.base-time-unit",
20782084
"defaultValue": "milliseconds"
@@ -2245,8 +2251,10 @@
22452251
{
22462252
"name": "micrometer.observations.annotations.enabled",
22472253
"type": "java.lang.Boolean",
2248-
"description": "Whether auto-configuration of Micrometer annotations is enabled.",
2249-
"defaultValue": false
2254+
"deprecation": {
2255+
"level": "error",
2256+
"replacement": "management.observations.annotations.enabled"
2257+
}
22502258
}
22512259
],
22522260
"hints": [

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAspectsAutoConfigurationTests.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
class MetricsAspectsAutoConfigurationTests {
4242

4343
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner().with(MetricsRun.simple())
44-
.withPropertyValues("micrometer.observations.annotations.enabled=true")
44+
.withPropertyValues("management.observations.annotations.enabled=true")
4545
.withConfiguration(AutoConfigurations.of(MetricsAspectsAutoConfiguration.class));
4646

4747
@Test
@@ -54,6 +54,17 @@ void shouldNotConfigureAspectsByDefault() {
5454
});
5555
}
5656

57+
@Test
58+
void shouldConfigureAspectsWithLegacyProperty() {
59+
new ApplicationContextRunner().with(MetricsRun.simple())
60+
.withConfiguration(AutoConfigurations.of(MetricsAspectsAutoConfiguration.class))
61+
.withPropertyValues("micrometer.observations.annotations.enabled=true")
62+
.run((context) -> {
63+
assertThat(context).hasSingleBean(CountedAspect.class);
64+
assertThat(context).hasSingleBean(TimedAspect.class);
65+
});
66+
}
67+
5768
@Test
5869
void shouldConfigureAspects() {
5970
this.contextRunner.run((context) -> {

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/MicrometerTracingAutoConfigurationTests.java

+14-3
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,12 @@
5252
class MicrometerTracingAutoConfigurationTests {
5353

5454
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
55-
.withPropertyValues("micrometer.observations.annotations.enabled=true")
55+
.withPropertyValues("management.observations.annotations.enabled=true")
5656
.withConfiguration(AutoConfigurations.of(MicrometerTracingAutoConfiguration.class));
5757

5858
@Test
5959
void shouldSupplyBeans() {
6060
this.contextRunner.withUserConfiguration(TracerConfiguration.class, PropagatorConfiguration.class)
61-
.withPropertyValues("micrometer.observations.annotations.enabled=true")
6261
.run((context) -> {
6362
assertThat(context).hasSingleBean(DefaultTracingObservationHandler.class);
6463
assertThat(context).hasSingleBean(PropagatingReceiverTracingObservationHandler.class);
@@ -133,14 +132,26 @@ void shouldNotSupplyBeansIfTracerIsMissing() {
133132
@Test
134133
void shouldNotSupplyAspectBeansIfPropertyIsDisabled() {
135134
this.contextRunner.withUserConfiguration(TracerConfiguration.class, PropagatorConfiguration.class)
136-
.withPropertyValues("micrometer.observations.annotations.enabled=false")
135+
.withPropertyValues("management.observations.annotations.enabled=false")
137136
.run((context) -> {
138137
assertThat(context).doesNotHaveBean(DefaultNewSpanParser.class);
139138
assertThat(context).doesNotHaveBean(ImperativeMethodInvocationProcessor.class);
140139
assertThat(context).doesNotHaveBean(SpanAspect.class);
141140
});
142141
}
143142

143+
@Test
144+
void shouldSupplyAspectBeansIfLegacyPropertyIsEnabled() {
145+
new ApplicationContextRunner().withPropertyValues("micrometer.observations.annotations.enabled=true")
146+
.withConfiguration(AutoConfigurations.of(MicrometerTracingAutoConfiguration.class))
147+
.withUserConfiguration(TracerConfiguration.class, PropagatorConfiguration.class)
148+
.run((context) -> {
149+
assertThat(context).hasSingleBean(DefaultNewSpanParser.class);
150+
assertThat(context).hasSingleBean(ImperativeMethodInvocationProcessor.class);
151+
assertThat(context).hasSingleBean(SpanAspect.class);
152+
});
153+
}
154+
144155
@Test
145156
void shouldNotSupplyBeansIfAspectjIsMissing() {
146157
this.contextRunner.withUserConfiguration(TracerConfiguration.class)

spring-boot-project/spring-boot-docs/src/docs/asciidoc/actuator/metrics.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1067,7 +1067,7 @@ Metrics for Jetty's `Connector` instances are bound by using Micrometer's `Jetty
10671067

10681068
[[actuator.metrics.supported.timed-annotation]]
10691069
==== @Timed Annotation Support
1070-
To enable scanning of `@Timed` annotations, you will need to set the configprop:micrometer.observations.annotations.enabled[] property to `true`.
1070+
To enable scanning of `@Timed` annotations, you will need to set the configprop:management.observations.annotations.enabled[] property to `true`.
10711071
Please refer to the {micrometer-concepts-docs}#_the_timed_annotation[Micrometer documentation].
10721072

10731073

spring-boot-project/spring-boot-docs/src/docs/asciidoc/actuator/observability.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,5 +92,5 @@ The next sections will provide more details about logging, metrics and traces.
9292

9393
[[actuator.observability.annotations]]
9494
=== Micrometer Observation Annotations support
95-
To enable scanning of metrics and tracing annotations like `@Timed`, `@Counted`, `@MeterTag` and `@NewSpan` annotations, you will need to set the configprop:micrometer.observations.annotations.enabled[] property to `true`.
95+
To enable scanning of metrics and tracing annotations like `@Timed`, `@Counted`, `@MeterTag` and `@NewSpan` annotations, you will need to set the configprop:management.observations.annotations.enabled[] property to `true`.
9696
This feature is supported Micrometer directly, please refer to the {micrometer-concepts-docs}#_the_timed_annotation[Micrometer] and {micrometer-tracing-docs}/api.html#_aspect_oriented_programming[Micrometer Tracing] reference docs.

0 commit comments

Comments
 (0)