Merge branch '4.0.x'

Closes gh-48584
This commit is contained in:
Moritz Halbritter
2025-12-19 11:31:55 +01:00
2 changed files with 20 additions and 3 deletions
@@ -58,9 +58,9 @@ import org.springframework.web.servlet.DispatcherServlet;
"org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration",
"org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" })
@ConditionalOnWebApplication(type = Type.SERVLET)
@ConditionalOnClass({ DispatcherServlet.class, Observation.class })
@ConditionalOnClass({ DispatcherServlet.class, Observation.class, ObservationProperties.class })
@ConditionalOnBean(ObservationRegistry.class)
@EnableConfigurationProperties({ MetricsProperties.class, ObservationProperties.class })
@EnableConfigurationProperties(ObservationProperties.class)
public final class WebMvcObservationAutoConfiguration {
@Bean
@@ -79,8 +79,9 @@ public final class WebMvcObservationAutoConfiguration {
}
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(MeterRegistry.class)
@ConditionalOnClass({ MeterRegistry.class, MetricsProperties.class })
@ConditionalOnBean(MeterRegistry.class)
@EnableConfigurationProperties(MetricsProperties.class)
static class MeterFilterConfiguration {
@Bean
@@ -31,8 +31,12 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.micrometer.metrics.MaximumAllowableTagsMeterFilter;
import org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration;
import org.springframework.boot.micrometer.metrics.autoconfigure.MetricsProperties;
import org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration;
import org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties;
import org.springframework.boot.test.context.FilteredClassLoader;
import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext;
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
import org.springframework.boot.test.system.CapturedOutput;
@@ -74,6 +78,12 @@ class WebMvcObservationAutoConfigurationTests {
.run((context) -> assertThat(context).doesNotHaveBean(FilterRegistrationBean.class));
}
@Test
void backsOffWhenObservationPropertiesIsMissing() {
this.contextRunner.withClassLoader(new FilteredClassLoader(ObservationProperties.class))
.run((context) -> assertThat(context).doesNotHaveBean(FilterRegistrationBean.class));
}
@Test
void definesFilterWhenRegistryIsPresent() {
this.contextRunner.run((context) -> {
@@ -171,6 +181,12 @@ class WebMvcObservationAutoConfigurationTests {
});
}
@Test
void shouldBackOffIfMetricsPropertiesIsNotPresent() {
this.contextRunner.withClassLoader(new FilteredClassLoader(MetricsProperties.class))
.run((context) -> assertThat(context).doesNotHaveBean(MaximumAllowableTagsMeterFilter.class));
}
private MeterRegistry getInitializedMeterRegistry(AssertableWebApplicationContext context) {
return getInitializedMeterRegistry(context, "/test0", "/test1", "/test2");
}