Skip to content

Commit 6586bae

Browse files
committed
Guard Endpoint bean declarations with ConditionalOnExposedEndpoint
This commit adds the newly introduced `@ConditionalOnExposedEndpoint` conditional annotation to all auto-configured `Endpoint` in Actuator. With that change, `EndPoint` instances and related infrastructure will only be created when they are meant to be exposed and used. This will save CPU and memory resources when Actuator is present. Closes gh-16093
1 parent 4ffbe6c commit 6586bae

File tree

44 files changed

+261
-45
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+261
-45
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/audit/AuditEventsEndpointAutoConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.springframework.boot.actuate.audit.AuditEventRepository;
2020
import org.springframework.boot.actuate.audit.AuditEventsEndpoint;
2121
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint;
22+
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnExposedEndpoint;
2223
import org.springframework.boot.actuate.logging.LoggersEndpoint;
2324
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
2425
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@@ -38,6 +39,7 @@
3839
@Configuration
3940
@AutoConfigureAfter(AuditAutoConfiguration.class)
4041
@ConditionalOnEnabledEndpoint(endpoint = AuditEventsEndpoint.class)
42+
@ConditionalOnExposedEndpoint(endpoint = AuditEventsEndpoint.class)
4143
public class AuditEventsEndpointAutoConfiguration {
4244

4345
@Bean

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/beans/BeansEndpointAutoConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.boot.actuate.autoconfigure.beans;
1818

1919
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint;
20+
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnExposedEndpoint;
2021
import org.springframework.boot.actuate.beans.BeansEndpoint;
2122
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2223
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -32,6 +33,7 @@
3233
*/
3334
@Configuration
3435
@ConditionalOnEnabledEndpoint(endpoint = BeansEndpoint.class)
36+
@ConditionalOnExposedEndpoint(endpoint = BeansEndpoint.class)
3537
public class BeansEndpointAutoConfiguration {
3638

3739
@Bean

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cache/CachesEndpointAutoConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.Map;
2020

2121
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint;
22+
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnExposedEndpoint;
2223
import org.springframework.boot.actuate.cache.CachesEndpoint;
2324
import org.springframework.boot.actuate.cache.CachesEndpointWebExtension;
2425
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
@@ -41,6 +42,7 @@
4142
@Configuration
4243
@ConditionalOnClass(CacheManager.class)
4344
@ConditionalOnEnabledEndpoint(endpoint = CachesEndpoint.class)
45+
@ConditionalOnExposedEndpoint(endpoint = CachesEndpoint.class)
4446
@AutoConfigureAfter(CacheAutoConfiguration.class)
4547
public class CachesEndpointAutoConfiguration {
4648

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/ReactiveCloudFoundryActuatorAutoConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.springframework.beans.factory.config.BeanPostProcessor;
2727
import org.springframework.boot.actuate.autoconfigure.cloudfoundry.CloudFoundryWebEndpointDiscoverer;
2828
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint;
29+
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnExposedEndpoint;
2930
import org.springframework.boot.actuate.autoconfigure.health.HealthEndpointAutoConfiguration;
3031
import org.springframework.boot.actuate.endpoint.ExposableEndpoint;
3132
import org.springframework.boot.actuate.endpoint.invoke.ParameterValueMapper;
@@ -75,6 +76,7 @@ public class ReactiveCloudFoundryActuatorAutoConfiguration {
7576
@Bean
7677
@ConditionalOnMissingBean
7778
@ConditionalOnEnabledEndpoint
79+
@ConditionalOnExposedEndpoint
7880
@ConditionalOnBean({ HealthEndpoint.class, ReactiveHealthEndpointWebExtension.class })
7981
public CloudFoundryReactiveHealthEndpointWebExtension cloudFoundryReactiveHealthEndpointWebExtension(
8082
ReactiveHealthEndpointWebExtension reactiveHealthEndpointWebExtension) {

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryActuatorAutoConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import org.springframework.boot.actuate.autoconfigure.cloudfoundry.CloudFoundryWebEndpointDiscoverer;
2626
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint;
27+
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnExposedEndpoint;
2728
import org.springframework.boot.actuate.autoconfigure.health.HealthEndpointAutoConfiguration;
2829
import org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration;
2930
import org.springframework.boot.actuate.endpoint.ExposableEndpoint;
@@ -79,6 +80,7 @@ public class CloudFoundryActuatorAutoConfiguration {
7980
@Bean
8081
@ConditionalOnMissingBean
8182
@ConditionalOnEnabledEndpoint
83+
@ConditionalOnExposedEndpoint
8284
@ConditionalOnBean({ HealthEndpoint.class, HealthEndpointWebExtension.class })
8385
public CloudFoundryHealthEndpointWebExtension cloudFoundryHealthEndpointWebExtension(
8486
HealthEndpointWebExtension healthEndpointWebExtension) {

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/condition/ConditionsReportEndpointAutoConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.boot.actuate.autoconfigure.condition;
1818

1919
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint;
20+
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnExposedEndpoint;
2021
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2122
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2223
import org.springframework.boot.autoconfigure.condition.SearchStrategy;
@@ -33,6 +34,7 @@
3334
*/
3435
@Configuration
3536
@ConditionalOnEnabledEndpoint(endpoint = ConditionsReportEndpoint.class)
37+
@ConditionalOnExposedEndpoint(endpoint = ConditionsReportEndpoint.class)
3638
public class ConditionsReportEndpointAutoConfiguration {
3739

3840
@Bean

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/context/ShutdownEndpointAutoConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.boot.actuate.autoconfigure.context;
1818

1919
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint;
20+
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnExposedEndpoint;
2021
import org.springframework.boot.actuate.context.ShutdownEndpoint;
2122
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2223
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -31,6 +32,7 @@
3132
*/
3233
@Configuration
3334
@ConditionalOnEnabledEndpoint(endpoint = ShutdownEndpoint.class)
35+
@ConditionalOnExposedEndpoint(endpoint = ShutdownEndpoint.class)
3436
public class ShutdownEndpointAutoConfiguration {
3537

3638
@Bean

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/context/properties/ConfigurationPropertiesReportEndpointAutoConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.boot.actuate.autoconfigure.context.properties;
1818

1919
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint;
20+
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnExposedEndpoint;
2021
import org.springframework.boot.actuate.context.properties.ConfigurationPropertiesReportEndpoint;
2122
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2223
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -34,6 +35,7 @@
3435
*/
3536
@Configuration
3637
@ConditionalOnEnabledEndpoint(endpoint = ConfigurationPropertiesReportEndpoint.class)
38+
@ConditionalOnExposedEndpoint(endpoint = ConfigurationPropertiesReportEndpoint.class)
3739
@EnableConfigurationProperties(ConfigurationPropertiesReportEndpointProperties.class)
3840
public class ConfigurationPropertiesReportEndpointAutoConfiguration {
3941

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/endpoint/jmx/JmxEndpointAutoConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
3939
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
4040
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
41+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
4142
import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate;
4243
import org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration;
4344
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -58,6 +59,7 @@
5859
@Configuration
5960
@AutoConfigureAfter(JmxAutoConfiguration.class)
6061
@EnableConfigurationProperties(JmxEndpointProperties.class)
62+
@ConditionalOnProperty(prefix = "spring.jmx", name = "enabled", havingValue = "true")
6163
public class JmxEndpointAutoConfiguration {
6264

6365
private final ApplicationContext applicationContext;

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/env/EnvironmentEndpointAutoConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.boot.actuate.autoconfigure.env;
1818

1919
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint;
20+
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnExposedEndpoint;
2021
import org.springframework.boot.actuate.env.EnvironmentEndpoint;
2122
import org.springframework.boot.actuate.env.EnvironmentEndpointWebExtension;
2223
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@@ -36,6 +37,7 @@
3637
*/
3738
@Configuration
3839
@ConditionalOnEnabledEndpoint(endpoint = EnvironmentEndpoint.class)
40+
@ConditionalOnExposedEndpoint(endpoint = EnvironmentEndpoint.class)
3941
@EnableConfigurationProperties(EnvironmentEndpointProperties.class)
4042
public class EnvironmentEndpointAutoConfiguration {
4143

0 commit comments

Comments
 (0)