Skip to content

Commit c5e1896

Browse files
committed
Move HTTP exchange auto-config into appropriate modules
1 parent 48596e6 commit c5e1896

File tree

33 files changed

+315
-239
lines changed

33 files changed

+315
-239
lines changed

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

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,6 @@
66
"type": "java.lang.Boolean",
77
"description": "Whether to enable SSL certificate health check.",
88
"defaultValue": true
9-
},
10-
{
11-
"name": "management.httpexchanges.recording.enabled",
12-
"type": "java.lang.Boolean",
13-
"description": "Whether to enable HTTP request-response exchange recording.",
14-
"defaultValue": true
15-
},
16-
{
17-
"name": "management.httpexchanges.recording.include",
18-
"defaultValue": [
19-
"request-headers",
20-
"response-headers",
21-
"errors"
22-
]
239
},
2410
{
2511
"name": "management.otlp.tracing.export.enabled",

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,3 @@ org.springframework.boot.actuate.autoconfigure.tracing.OpenTelemetryTracingAutoC
1212
org.springframework.boot.actuate.autoconfigure.tracing.otlp.OtlpTracingAutoConfiguration
1313
org.springframework.boot.actuate.autoconfigure.tracing.prometheus.PrometheusExemplarsAutoConfiguration
1414
org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinTracingAutoConfiguration
15-
org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesAutoConfiguration
16-
org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesEndpointAutoConfiguration

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/integrationtest/JmxEndpointAccessIntegrationTests.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
2727
import org.springframework.boot.actuate.autoconfigure.endpoint.jmx.JmxEndpointAutoConfiguration;
2828
import org.springframework.boot.actuate.autoconfigure.health.HealthContributorAutoConfiguration;
29-
import org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesAutoConfiguration;
3029
import org.springframework.boot.actuate.endpoint.annotation.DeleteOperation;
3130
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
3231
import org.springframework.boot.actuate.endpoint.annotation.WriteOperation;
@@ -47,8 +46,7 @@ class JmxEndpointAccessIntegrationTests {
4746

4847
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
4948
.withConfiguration(AutoConfigurations.of(JmxAutoConfiguration.class, EndpointAutoConfiguration.class,
50-
JmxEndpointAutoConfiguration.class, HealthContributorAutoConfiguration.class,
51-
HttpExchangesAutoConfiguration.class))
49+
JmxEndpointAutoConfiguration.class, HealthContributorAutoConfiguration.class))
5250
.withUserConfiguration(CustomJmxEndpoint.class)
5351
.withPropertyValues("spring.jmx.enabled=true")
5452
.withConfiguration(AutoConfigurations.of(EndpointAutoConfigurationClasses.ALL));

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/integrationtest/JmxEndpointIntegrationTests.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
3232
import org.springframework.boot.actuate.autoconfigure.endpoint.jmx.JmxEndpointAutoConfiguration;
3333
import org.springframework.boot.actuate.autoconfigure.health.HealthContributorAutoConfiguration;
34-
import org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesAutoConfiguration;
3534
import org.springframework.boot.actuate.web.exchanges.InMemoryHttpExchangeRepository;
3635
import org.springframework.boot.autoconfigure.AutoConfigurations;
3736
import org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration;
@@ -52,8 +51,7 @@ class JmxEndpointIntegrationTests {
5251

5352
private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner()
5453
.withConfiguration(AutoConfigurations.of(JmxAutoConfiguration.class, EndpointAutoConfiguration.class,
55-
JmxEndpointAutoConfiguration.class, HealthContributorAutoConfiguration.class,
56-
HttpExchangesAutoConfiguration.class))
54+
JmxEndpointAutoConfiguration.class, HealthContributorAutoConfiguration.class))
5755
.withUserConfiguration(HttpExchangeRepositoryConfiguration.class, AuditEventRepositoryConfiguration.class)
5856
.withPropertyValues("spring.jmx.enabled=true")
5957
.withConfiguration(AutoConfigurations.of(EndpointAutoConfigurationClasses.ALL));

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/integrationtest/WebMvcEndpointExposureIntegrationTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@
3030
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
3131
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
3232
import org.springframework.boot.actuate.autoconfigure.health.HealthContributorAutoConfiguration;
33-
import org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesAutoConfiguration;
3433
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
3534
import org.springframework.boot.actuate.web.exchanges.InMemoryHttpExchangeRepository;
3635
import org.springframework.boot.autoconfigure.AutoConfigurations;
3736
import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration;
3837
import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration;
3938
import org.springframework.boot.servlet.actuate.autoconfigure.ServletManagementContextAutoConfiguration;
39+
import org.springframework.boot.servlet.actuate.autoconfigure.exchanges.ServletHttpExchangesAutoConfiguration;
4040
import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext;
4141
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
4242
import org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration;
@@ -70,7 +70,7 @@ class WebMvcEndpointExposureIntegrationTests {
7070
JacksonAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class,
7171
WebMvcAutoConfiguration.class, EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
7272
ManagementContextAutoConfiguration.class, ManagementContextAutoConfiguration.class,
73-
ServletManagementContextAutoConfiguration.class, HttpExchangesAutoConfiguration.class,
73+
ServletManagementContextAutoConfiguration.class, ServletHttpExchangesAutoConfiguration.class,
7474
HealthContributorAutoConfiguration.class))
7575
.withConfiguration(AutoConfigurations.of(EndpointAutoConfigurationClasses.ALL))
7676
.withUserConfiguration(CustomMvcEndpoint.class, CustomServletEndpoint.class,

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/web/exchanges/HttpExchangesAutoConfigurationTests.java

Lines changed: 0 additions & 161 deletions
This file was deleted.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
* @author Phillip Webb
3333
* @since 3.0.0
3434
*/
35-
@AutoConfiguration(after = HttpExchangesAutoConfiguration.class)
35+
@AutoConfiguration
3636
@ConditionalOnAvailableEndpoint(HttpExchangesEndpoint.class)
3737
public class HttpExchangesEndpointAutoConfiguration {
3838

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,20 @@
138138
"description": "Whether to enable readiness state health check.",
139139
"defaultValue": false
140140
},
141+
{
142+
"name": "management.httpexchanges.recording.enabled",
143+
"type": "java.lang.Boolean",
144+
"description": "Whether to enable HTTP request-response exchange recording.",
145+
"defaultValue": true
146+
},
147+
{
148+
"name": "management.httpexchanges.recording.include",
149+
"defaultValue": [
150+
"request-headers",
151+
"response-headers",
152+
"errors"
153+
]
154+
},
141155
{
142156
"name": "management.info.build.enabled",
143157
"type": "java.lang.Boolean",

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,6 @@ org.springframework.boot.actuate.autoconfigure.sbom.SbomEndpointAutoConfiguratio
2323
org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksEndpointAutoConfiguration
2424
org.springframework.boot.actuate.autoconfigure.startup.StartupEndpointAutoConfiguration
2525
org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthContributorAutoConfiguration
26+
org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesEndpointAutoConfiguration
2627
org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration
2728
org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535
*/
3636
class HttpExchangesEndpointAutoConfigurationTests {
3737

38-
private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner().withConfiguration(
39-
AutoConfigurations.of(HttpExchangesAutoConfiguration.class, HttpExchangesEndpointAutoConfiguration.class));
38+
private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner()
39+
.withConfiguration(AutoConfigurations.of(HttpExchangesEndpointAutoConfiguration.class));
4040

4141
@Test
4242
void runWhenRepositoryBeanAvailableShouldHaveEndpointBean() {
Lines changed: 10 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.boot.actuate.autoconfigure.web.exchanges;
17+
package org.springframework.boot.servlet.actuate.autoconfigure.exchanges;
1818

19+
import org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesProperties;
1920
import org.springframework.boot.actuate.web.exchanges.HttpExchange;
2021
import org.springframework.boot.actuate.web.exchanges.HttpExchangeRepository;
21-
import org.springframework.boot.actuate.web.exchanges.servlet.HttpExchangesFilter;
2222
import org.springframework.boot.autoconfigure.AutoConfiguration;
2323
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2424
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
@@ -27,47 +27,27 @@
2727
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
2828
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
2929
import org.springframework.boot.context.properties.EnableConfigurationProperties;
30-
import org.springframework.boot.webflux.actuate.web.exchanges.HttpExchangesWebFilter;
30+
import org.springframework.boot.servlet.actuate.exchanges.HttpExchangesFilter;
3131
import org.springframework.context.annotation.Bean;
32-
import org.springframework.context.annotation.Configuration;
3332

3433
/**
3534
* {@link EnableAutoConfiguration Auto-configuration} to record {@link HttpExchange HTTP
3635
* exchanges}.
3736
*
3837
* @author Dave Syer
39-
* @since 3.0.0
38+
* @since 4.0.0
4039
*/
4140
@AutoConfiguration
42-
@ConditionalOnWebApplication
41+
@ConditionalOnWebApplication(type = Type.SERVLET)
4342
@ConditionalOnBooleanProperty(name = "management.httpexchanges.recording.enabled", matchIfMissing = true)
4443
@ConditionalOnBean(HttpExchangeRepository.class)
4544
@EnableConfigurationProperties(HttpExchangesProperties.class)
46-
public class HttpExchangesAutoConfiguration {
47-
48-
@Configuration(proxyBeanMethods = false)
49-
@ConditionalOnWebApplication(type = Type.SERVLET)
50-
static class ServletHttpExchangesConfiguration {
51-
52-
@Bean
53-
@ConditionalOnMissingBean
54-
HttpExchangesFilter httpExchangesFilter(HttpExchangeRepository repository, HttpExchangesProperties properties) {
55-
return new HttpExchangesFilter(repository, properties.getRecording().getInclude());
56-
}
57-
58-
}
59-
60-
@Configuration(proxyBeanMethods = false)
61-
@ConditionalOnWebApplication(type = Type.REACTIVE)
62-
static class ReactiveHttpExchangesConfiguration {
63-
64-
@Bean
65-
@ConditionalOnMissingBean
66-
HttpExchangesWebFilter httpExchangesWebFilter(HttpExchangeRepository repository,
67-
HttpExchangesProperties properties) {
68-
return new HttpExchangesWebFilter(repository, properties.getRecording().getInclude());
69-
}
45+
public class ServletHttpExchangesAutoConfiguration {
7046

47+
@Bean
48+
@ConditionalOnMissingBean
49+
HttpExchangesFilter httpExchangesFilter(HttpExchangeRepository repository, HttpExchangesProperties properties) {
50+
return new HttpExchangesFilter(repository, properties.getRecording().getInclude());
7151
}
7252

7353
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* Copyright 2012-2025 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
/**
18+
* Auto-configuration for Servlet-based integration with Actuator's HTTP exchanges
19+
* support.
20+
*/
21+
package org.springframework.boot.servlet.actuate.autoconfigure.exchanges;

0 commit comments

Comments
 (0)