diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/TraceWebFilterAutoConfiguration.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/TraceWebFilterAutoConfiguration.java index f995cd1052e..2631cf0c723 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/TraceWebFilterAutoConfiguration.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/TraceWebFilterAutoConfiguration.java @@ -41,11 +41,11 @@ import org.springframework.web.servlet.DispatcherServlet; * * @author Dave Syer */ +@Configuration @ConditionalOnClass({ Servlet.class, DispatcherServlet.class, ServletRegistration.class }) @AutoConfigureAfter(TraceRepositoryAutoConfiguration.class) -@ConditionalOnProperty(name = "endpoints.trace.filter.enabled", matchIfMissing = true) +@ConditionalOnProperty(prefix = "endpoints.trace.filter", name = "enabled", matchIfMissing = true) @EnableConfigurationProperties(TraceProperties.class) -@Configuration public class TraceWebFilterAutoConfiguration { private final TraceRepository traceRepository; diff --git a/spring-boot-actuator/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-boot-actuator/src/main/resources/META-INF/additional-spring-configuration-metadata.json index e32aaacd40b..5c0b2639df3 100644 --- a/spring-boot-actuator/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-boot-actuator/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -80,6 +80,12 @@ "type": "java.lang.String", "description": "Endpoint URL path." }, + { + "name": "endpoints.trace.filter.enabled", + "type": "java.lang.Boolean", + "description": "Enable the trace servlet filter.", + "defaultValue": true + }, { "name": "info", "type": "java.util.Map", diff --git a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/TraceWebFilterAutoConfigurationTests.java b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/TraceWebFilterAutoConfigurationTests.java index 0574dacdee3..3e232b42de9 100644 --- a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/TraceWebFilterAutoConfigurationTests.java +++ b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/TraceWebFilterAutoConfigurationTests.java @@ -18,6 +18,7 @@ package org.springframework.boot.actuate.autoconfigure; import java.util.Map; +import org.junit.After; import org.junit.Test; import org.springframework.boot.actuate.trace.TraceProperties; @@ -35,41 +36,54 @@ import static org.assertj.core.api.Assertions.assertThat; * Tests for {@link TraceWebFilterAutoConfiguration}. * * @author Phillip Webb + * @author Stephane Nicoll */ public class TraceWebFilterAutoConfigurationTests { + private AnnotationConfigApplicationContext context; + + @After + public void close() { + if (this.context != null) { + this.context.close(); + } + } + @Test public void configureFilter() { - AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext( - PropertyPlaceholderAutoConfiguration.class, - TraceRepositoryAutoConfiguration.class, - TraceWebFilterAutoConfiguration.class); - assertThat(context.getBean(WebRequestTraceFilter.class)).isNotNull(); - context.close(); + load(); + assertThat(this.context.getBean(WebRequestTraceFilter.class)).isNotNull(); } @Test public void overrideTraceFilter() throws Exception { - AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext( - CustomTraceFilterConfig.class, PropertyPlaceholderAutoConfiguration.class, - TraceRepositoryAutoConfiguration.class, - TraceWebFilterAutoConfiguration.class); - WebRequestTraceFilter filter = context.getBean(WebRequestTraceFilter.class); + load(CustomTraceFilterConfig.class); + WebRequestTraceFilter filter = this.context.getBean(WebRequestTraceFilter.class); assertThat(filter).isInstanceOf(TestWebRequestTraceFilter.class); - context.close(); } @Test public void skipsFilterIfPropertyDisabled() throws Exception { - AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); - EnvironmentTestUtils.addEnvironment(context, - "endpoints.trace.filter.enabled:false"); - context.register(PropertyPlaceholderAutoConfiguration.class, - TraceRepositoryAutoConfiguration.class, - TraceWebFilterAutoConfiguration.class); - context.refresh(); - assertThat(context.getBeansOfType(WebRequestTraceFilter.class).size()).isEqualTo(0); - context.close(); + load("endpoints.trace.filter.enabled:false"); + assertThat(this.context.getBeansOfType(WebRequestTraceFilter.class).size()) + .isEqualTo(0); + } + + private void load(String... environment) { + load(null, environment); + } + + private void load(Class config, String... environment) { + AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); + EnvironmentTestUtils.addEnvironment(ctx, environment); + if (config != null) { + ctx.register(config); + } + ctx.register(PropertyPlaceholderAutoConfiguration.class, + TraceRepositoryAutoConfiguration.class, + TraceWebFilterAutoConfiguration.class); + ctx.refresh(); + this.context = ctx; } @Configuration diff --git a/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc b/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc index 71b74e4c20d..09e7341b05e 100644 --- a/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc +++ b/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc @@ -1058,6 +1058,7 @@ content into your application; rather pick only the properties that you need. endpoints.shutdown.path= # Endpoint path. endpoints.shutdown.sensitive= # Mark if the endpoint exposes sensitive information. endpoints.trace.enabled= # Enable the endpoint. + endpoints.trace.filter.enabled=true # Enable the trace servlet filter. endpoints.trace.id= # Endpoint identifier. endpoints.trace.path= # Endpoint path. endpoints.trace.sensitive= # Mark if the endpoint exposes sensitive information.