Skip to content

Commit 3087514

Browse files
committed
Move endpoints.health.mapping to management.health.status.http-mapping
Closes gh-10052
1 parent f2a7494 commit 3087514

12 files changed

+40
-73
lines changed

spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/endpoint/web/HealthWebEndpointExtensionProperties.java

Lines changed: 0 additions & 49 deletions
This file was deleted.

spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/endpoint/web/WebEndpointManagementContextConfiguration.java

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,16 @@
1818

1919
import org.springframework.boot.actuate.autoconfigure.ManagementContextConfiguration;
2020
import org.springframework.boot.actuate.autoconfigure.endpoint.ConditionalOnEnabledEndpoint;
21+
import org.springframework.boot.actuate.autoconfigure.health.HealthIndicatorProperties;
2122
import org.springframework.boot.actuate.endpoint.AuditEventsEndpoint;
2223
import org.springframework.boot.actuate.endpoint.HealthEndpoint;
2324
import org.springframework.boot.actuate.endpoint.StatusEndpoint;
2425
import org.springframework.boot.actuate.endpoint.web.AuditEventsWebEndpointExtension;
25-
import org.springframework.boot.actuate.endpoint.web.HealthStatusHttpMapper;
2626
import org.springframework.boot.actuate.endpoint.web.HealthWebEndpointExtension;
2727
import org.springframework.boot.actuate.endpoint.web.HeapDumpWebEndpoint;
2828
import org.springframework.boot.actuate.endpoint.web.LogFileWebEndpoint;
2929
import org.springframework.boot.actuate.endpoint.web.StatusWebEndpointExtension;
30+
import org.springframework.boot.actuate.health.HealthStatusHttpMapper;
3031
import org.springframework.boot.autoconfigure.condition.ConditionMessage;
3132
import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
3233
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
@@ -48,7 +49,7 @@
4849
* @since 2.0.0
4950
*/
5051
@ManagementContextConfiguration
51-
@EnableConfigurationProperties(HealthWebEndpointExtensionProperties.class)
52+
@EnableConfigurationProperties(HealthIndicatorProperties.class)
5253
public class WebEndpointManagementContextConfiguration {
5354

5455
@Bean
@@ -63,26 +64,26 @@ public HeapDumpWebEndpoint heapDumpWebEndpoint() {
6364
@ConditionalOnEnabledEndpoint
6465
@ConditionalOnBean(value = HealthEndpoint.class, search = SearchStrategy.CURRENT)
6566
public HealthWebEndpointExtension healthWebEndpointExtension(HealthEndpoint delegate,
66-
HealthWebEndpointExtensionProperties extensionProperties) {
67-
return new HealthWebEndpointExtension(delegate,
68-
createHealthStatusHttpMapper(extensionProperties));
67+
HealthStatusHttpMapper healthStatusHttpMapper) {
68+
return new HealthWebEndpointExtension(delegate, healthStatusHttpMapper);
6969
}
7070

7171
@Bean
7272
@ConditionalOnMissingBean
7373
@ConditionalOnEnabledEndpoint
7474
@ConditionalOnBean(value = StatusEndpoint.class, search = SearchStrategy.CURRENT)
7575
public StatusWebEndpointExtension statusWebEndpointExtension(StatusEndpoint delegate,
76-
HealthWebEndpointExtensionProperties extensionProperties) {
77-
return new StatusWebEndpointExtension(delegate,
78-
createHealthStatusHttpMapper(extensionProperties));
76+
HealthStatusHttpMapper healthStatusHttpMapper) {
77+
return new StatusWebEndpointExtension(delegate, healthStatusHttpMapper);
7978
}
8079

81-
private HealthStatusHttpMapper createHealthStatusHttpMapper(
82-
HealthWebEndpointExtensionProperties extensionProperties) {
80+
@Bean
81+
@ConditionalOnMissingBean
82+
public HealthStatusHttpMapper createHealthStatusHttpMapper(
83+
HealthIndicatorProperties healthIndicatorProperties) {
8384
HealthStatusHttpMapper statusHttpMapper = new HealthStatusHttpMapper();
84-
if (extensionProperties.getMapping() != null) {
85-
statusHttpMapper.addStatusMapping(extensionProperties.getMapping());
85+
if (healthIndicatorProperties.getHttpMapping() != null) {
86+
statusHttpMapper.addStatusMapping(healthIndicatorProperties.getHttpMapping());
8687
}
8788
return statusHttpMapper;
8889
}

spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/health/HealthIndicatorProperties.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.health;
1818

19+
import java.util.HashMap;
1920
import java.util.List;
21+
import java.util.Map;
2022

2123
import org.springframework.boot.context.properties.ConfigurationProperties;
2224

@@ -34,6 +36,12 @@ public class HealthIndicatorProperties {
3436
*/
3537
private List<String> order = null;
3638

39+
/**
40+
* Mapping of health statuses to HttpStatus codes. By default, registered health
41+
* statuses map to sensible defaults (i.e. UP maps to 200).
42+
*/
43+
private final Map<String, Integer> httpMapping = new HashMap<>();
44+
3745
public List<String> getOrder() {
3846
return this.order;
3947
}
@@ -44,4 +52,8 @@ public void setOrder(List<String> statusOrder) {
4452
}
4553
}
4654

55+
public Map<String, Integer> getHttpMapping() {
56+
return this.httpMapping;
57+
}
58+
4759
}

spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/web/HealthWebEndpointExtension.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import org.springframework.boot.actuate.endpoint.HealthEndpoint;
2020
import org.springframework.boot.actuate.health.Health;
21+
import org.springframework.boot.actuate.health.HealthStatusHttpMapper;
2122
import org.springframework.boot.endpoint.ReadOperation;
2223
import org.springframework.boot.endpoint.web.WebEndpointExtension;
2324
import org.springframework.boot.endpoint.web.WebEndpointResponse;

spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/web/StatusWebEndpointExtension.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import org.springframework.boot.actuate.endpoint.StatusEndpoint;
2020
import org.springframework.boot.actuate.health.Health;
21+
import org.springframework.boot.actuate.health.HealthStatusHttpMapper;
2122
import org.springframework.boot.endpoint.ReadOperation;
2223
import org.springframework.boot.endpoint.web.WebEndpointExtension;
2324
import org.springframework.boot.endpoint.web.WebEndpointResponse;
Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,12 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.boot.actuate.endpoint.web;
17+
package org.springframework.boot.actuate.health;
1818

1919
import java.util.Collections;
2020
import java.util.HashMap;
2121
import java.util.Map;
2222

23-
import org.springframework.boot.actuate.health.Status;
2423
import org.springframework.util.Assert;
2524

2625
/**
@@ -108,8 +107,6 @@ public int mapStatus(Status status) {
108107
return 200;
109108
}
110109

111-
112-
113110
private String getUniformValue(String code) {
114111
if (code == null) {
115112
return null;

spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/endpoint/web/WebEndpointManagementContextConfigurationTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@
2525
import org.springframework.boot.actuate.endpoint.HealthEndpoint;
2626
import org.springframework.boot.actuate.endpoint.StatusEndpoint;
2727
import org.springframework.boot.actuate.endpoint.web.AuditEventsWebEndpointExtension;
28-
import org.springframework.boot.actuate.endpoint.web.HealthStatusHttpMapper;
2928
import org.springframework.boot.actuate.endpoint.web.HealthWebEndpointExtension;
3029
import org.springframework.boot.actuate.endpoint.web.HeapDumpWebEndpoint;
3130
import org.springframework.boot.actuate.endpoint.web.LogFileWebEndpoint;
3231
import org.springframework.boot.actuate.endpoint.web.StatusWebEndpointExtension;
3332
import org.springframework.boot.actuate.health.Health;
33+
import org.springframework.boot.actuate.health.HealthStatusHttpMapper;
3434
import org.springframework.boot.autoconfigure.AutoConfigurations;
3535
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3636
import org.springframework.context.annotation.Bean;
@@ -68,7 +68,7 @@ public void healthWebEndpointExtensionIsAutoConfigured() {
6868
@Test
6969
public void healthStatusMappingCanBeCustomized() {
7070
ApplicationContextRunner contextRunner = contextRunner()
71-
.withPropertyValues("endpoints.health.mapping.CUSTOM=500")
71+
.withPropertyValues("management.health.status.http-mapping.CUSTOM=500")
7272
.withUserConfiguration(HealthEndpointConfiguration.class);
7373
contextRunner.run((context) -> {
7474
HealthWebEndpointExtension extension = context
@@ -97,7 +97,7 @@ public void statusWebEndpointExtensionIsAutoConfigured() {
9797
@Test
9898
public void statusMappingCanBeCustomized() {
9999
ApplicationContextRunner contextRunner = contextRunner()
100-
.withPropertyValues("endpoints.health.mapping.CUSTOM=500")
100+
.withPropertyValues("management.health.status.http-mapping.CUSTOM=500")
101101
.withUserConfiguration(StatusEndpointConfiguration.class);
102102
contextRunner.run((context) -> {
103103
StatusWebEndpointExtension extension = context

spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/mvc/NoSpringSecurityHealthMvcEndpointIntegrationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@
2626
import org.springframework.boot.actuate.autoconfigure.endpoint.infrastructure.EndpointInfrastructureAutoConfiguration;
2727
import org.springframework.boot.actuate.autoconfigure.endpoint.infrastructure.ServletEndpointAutoConfiguration;
2828
import org.springframework.boot.actuate.endpoint.HealthEndpoint;
29-
import org.springframework.boot.actuate.endpoint.web.HealthStatusHttpMapper;
3029
import org.springframework.boot.actuate.endpoint.web.HealthWebEndpointExtension;
3130
import org.springframework.boot.actuate.health.Health;
3231
import org.springframework.boot.actuate.health.HealthIndicator;
3332
import org.springframework.boot.actuate.health.HealthIndicatorFactory;
33+
import org.springframework.boot.actuate.health.HealthStatusHttpMapper;
3434
import org.springframework.boot.actuate.health.OrderedHealthAggregator;
3535
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
3636
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;

spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/web/HealthEndpointWebIntegrationTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.springframework.boot.actuate.health.Health;
2626
import org.springframework.boot.actuate.health.HealthIndicator;
2727
import org.springframework.boot.actuate.health.HealthIndicatorFactory;
28+
import org.springframework.boot.actuate.health.HealthStatusHttpMapper;
2829
import org.springframework.boot.actuate.health.OrderedHealthAggregator;
2930
import org.springframework.context.ConfigurableApplicationContext;
3031
import org.springframework.context.annotation.Bean;

spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/web/StatusEndpointWebIntegrationTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.springframework.boot.actuate.health.Health;
2626
import org.springframework.boot.actuate.health.HealthIndicator;
2727
import org.springframework.boot.actuate.health.HealthIndicatorFactory;
28+
import org.springframework.boot.actuate.health.HealthStatusHttpMapper;
2829
import org.springframework.boot.actuate.health.OrderedHealthAggregator;
2930
import org.springframework.context.ConfigurableApplicationContext;
3031
import org.springframework.context.annotation.Bean;

spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1139,7 +1139,6 @@ content into your application; rather pick only the properties that you need.
11391139
endpoints.health.cache.time-to-live=0 # Maximum time in milliseconds that a response can be cached.
11401140
endpoints.health.enabled=true # Enable the health endpoint.
11411141
endpoints.health.jmx.enabled=true # Expose the health endpoint as a JMX MBean.
1142-
endpoints.health.mapping= # Mapping of health statuses to HttpStatus codes. By default, registered health statuses map to sensible defaults (i.e. UP maps to 200).
11431142
endpoints.health.web.enabled=true # Expose the health endpoint as a Web endpoint.
11441143
11451144
# HEAP DUMP ENDPOINT ({sc-spring-boot-actuator}/endpoint/HeapDumpWebEndpoint.{sc-ext}[HeapDumpWebEndpoint])
@@ -1258,6 +1257,7 @@ content into your application; rather pick only the properties that you need.
12581257
management.health.rabbit.enabled=true # Enable RabbitMQ health check.
12591258
management.health.redis.enabled=true # Enable Redis health check.
12601259
management.health.solr.enabled=true # Enable Solr health check.
1260+
management.health.status.http-mapping= # Mapping of health statuses to HttpStatus codes. By default, registered health statuses map to sensible defaults (i.e. UP maps to 200).
12611261
management.health.status.order=DOWN, OUT_OF_SERVICE, UP, UNKNOWN # Comma-separated list of health statuses in order of severity.
12621262
12631263
# INFO CONTRIBUTORS ({sc-spring-boot-actuator}/autoconfigure/InfoContributorProperties.{sc-ext}[InfoContributorProperties])

spring-boot-docs/src/main/asciidoc/production-ready-features.adoc

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -383,14 +383,16 @@ to your application properties:
383383

384384
The HTTP status code in the response reflects the overall health status (e.g. `UP`
385385
maps to 200, `OUT_OF_SERVICE` or `DOWN` to 503). You might also want to register custom
386-
status mappings with the `HealthMvcEndpoint` if you access the health endpoint over HTTP.
387-
For example, the following maps `FATAL` to `HttpStatus.SERVICE_UNAVAILABLE`:
386+
status mappings if you access the health endpoint over HTTP. For example, the following
387+
maps `FATAL` to `HttpStatus.SERVICE_UNAVAILABLE`:
388388

389389
[source,properties,indent=0]
390390
----
391-
endpoints.health.mapping.FATAL=503
391+
management.health.status.http-mapping.FATAL=503
392392
----
393393

394+
TIP: If you need more control you can define your own `HealthStatusHttpMapper` bean.
395+
394396
The default status mappings for the built-in statuses are:
395397

396398
[cols="1,3"]

0 commit comments

Comments
 (0)