Skip to content

Commit 77922af

Browse files
committed
Merge branch '3.2.x'
Closes gh-39603
2 parents ce3837d + 59693f2 commit 77922af

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
@@ -33,11 +33,13 @@
3333
import org.springframework.beans.factory.BeanFactory;
3434
import org.springframework.boot.autoconfigure.AutoConfiguration;
3535
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
36+
import org.springframework.boot.autoconfigure.condition.AnyNestedCondition;
3637
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
3738
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3839
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
3940
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
4041
import org.springframework.context.annotation.Bean;
42+
import org.springframework.context.annotation.Conditional;
4143
import org.springframework.context.annotation.Configuration;
4244
import org.springframework.core.Ordered;
4345
import org.springframework.core.annotation.Order;
@@ -102,7 +104,7 @@ public PropagatingReceiverTracingObservationHandler<?> propagatingReceiverTracin
102104

103105
@Configuration(proxyBeanMethods = false)
104106
@ConditionalOnClass(Advice.class)
105-
@ConditionalOnProperty(prefix = "micrometer.observations.annotations", name = "enabled", havingValue = "true")
107+
@Conditional(ObservationAnnotationsEnabledCondition.class)
106108
static class SpanAspectConfiguration {
107109

108110
@Bean
@@ -150,4 +152,22 @@ public String resolve(String expression, Object parameter) {
150152

151153
}
152154

155+
static final class ObservationAnnotationsEnabledCondition extends AnyNestedCondition {
156+
157+
ObservationAnnotationsEnabledCondition() {
158+
super(ConfigurationPhase.PARSE_CONFIGURATION);
159+
}
160+
161+
@ConditionalOnProperty(prefix = "micrometer.observations.annotations", name = "enabled", havingValue = "true")
162+
static class MicrometerObservationsEnabledCondition {
163+
164+
}
165+
166+
@ConditionalOnProperty(prefix = "management.observations.annotations", name = "enabled", havingValue = "true")
167+
static class ManagementObservationsEnabledCondition {
168+
169+
}
170+
171+
}
172+
153173
}

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
@@ -2079,6 +2079,12 @@
20792079
"level": "error"
20802080
}
20812081
},
2082+
{
2083+
"name": "management.observations.annotations.enabled",
2084+
"type": "java.lang.Boolean",
2085+
"description": "Whether auto-configuration of Micrometer annotations is enabled.",
2086+
"defaultValue": false
2087+
},
20822088
{
20832089
"name": "management.otlp.metrics.export.base-time-unit",
20842090
"defaultValue": "milliseconds"
@@ -2251,8 +2257,10 @@
22512257
{
22522258
"name": "micrometer.observations.annotations.enabled",
22532259
"type": "java.lang.Boolean",
2254-
"description": "Whether auto-configuration of Micrometer annotations is enabled.",
2255-
"defaultValue": false
2260+
"deprecation": {
2261+
"level": "error",
2262+
"replacement": "management.observations.annotations.enabled"
2263+
}
22562264
}
22572265
],
22582266
"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
@@ -54,13 +54,12 @@
5454
class MicrometerTracingAutoConfigurationTests {
5555

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

6060
@Test
6161
void shouldSupplyBeans() {
6262
this.contextRunner.withUserConfiguration(TracerConfiguration.class, PropagatorConfiguration.class)
63-
.withPropertyValues("micrometer.observations.annotations.enabled=true")
6463
.run((context) -> {
6564
assertThat(context).hasSingleBean(DefaultTracingObservationHandler.class);
6665
assertThat(context).hasSingleBean(PropagatingReceiverTracingObservationHandler.class);
@@ -138,14 +137,26 @@ void shouldNotSupplyBeansIfTracerIsMissing() {
138137
@Test
139138
void shouldNotSupplyAspectBeansIfPropertyIsDisabled() {
140139
this.contextRunner.withUserConfiguration(TracerConfiguration.class, PropagatorConfiguration.class)
141-
.withPropertyValues("micrometer.observations.annotations.enabled=false")
140+
.withPropertyValues("management.observations.annotations.enabled=false")
142141
.run((context) -> {
143142
assertThat(context).doesNotHaveBean(DefaultNewSpanParser.class);
144143
assertThat(context).doesNotHaveBean(ImperativeMethodInvocationProcessor.class);
145144
assertThat(context).doesNotHaveBean(SpanAspect.class);
146145
});
147146
}
148147

148+
@Test
149+
void shouldSupplyAspectBeansIfLegacyPropertyIsEnabled() {
150+
new ApplicationContextRunner().withPropertyValues("micrometer.observations.annotations.enabled=true")
151+
.withConfiguration(AutoConfigurations.of(MicrometerTracingAutoConfiguration.class))
152+
.withUserConfiguration(TracerConfiguration.class, PropagatorConfiguration.class)
153+
.run((context) -> {
154+
assertThat(context).hasSingleBean(DefaultNewSpanParser.class);
155+
assertThat(context).hasSingleBean(ImperativeMethodInvocationProcessor.class);
156+
assertThat(context).hasSingleBean(SpanAspect.class);
157+
});
158+
}
159+
149160
@Test
150161
void shouldNotSupplyBeansIfAspectjIsMissing() {
151162
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)