From 1baf3c63c4d617244734a1a6a47849d1a55312dc Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Mon, 12 Dec 2016 15:05:48 +0000 Subject: [PATCH] Make the Spring Security part of CF autoconfig conditional Otherwise you get a class not found exception at runtime in CF when Spring Securtity is not on the classpath. --- ...CloudFoundryActuatorAutoConfiguration.java | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cloudfoundry/CloudFoundryActuatorAutoConfiguration.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cloudfoundry/CloudFoundryActuatorAutoConfiguration.java index 68e51c8258..d5b2feea7f 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cloudfoundry/CloudFoundryActuatorAutoConfiguration.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cloudfoundry/CloudFoundryActuatorAutoConfiguration.java @@ -26,6 +26,7 @@ import org.springframework.boot.actuate.endpoint.mvc.NamedMvcEndpoint; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnCloudPlatform; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.security.IgnoredRequestCustomizer; @@ -98,18 +99,27 @@ public class CloudFoundryActuatorAutoConfiguration { return corsConfiguration; } - @Bean - public IgnoredRequestCustomizer cloudFoundryIgnoredRequestCustomizer() { - return new CloudFoundryIgnoredRequestCustomizer(); - } + /** + * Nested configuration for ignored requests if Spring Security is present. + * + */ + @ConditionalOnClass(WebSecurity.class) + static class CloudFoundryIgnoredRequestConfiguration { - private class CloudFoundryIgnoredRequestCustomizer - implements IgnoredRequestCustomizer { + @Bean + public IgnoredRequestCustomizer cloudFoundryIgnoredRequestCustomizer() { + return new CloudFoundryIgnoredRequestCustomizer(); + } + + private static class CloudFoundryIgnoredRequestCustomizer + implements IgnoredRequestCustomizer { + + @Override + public void customize(WebSecurity.IgnoredRequestConfigurer configurer) { + configurer.requestMatchers( + new AntPathRequestMatcher("/cloudfoundryapplication/**")); + } - @Override - public void customize(WebSecurity.IgnoredRequestConfigurer configurer) { - configurer.requestMatchers( - new AntPathRequestMatcher("/cloudfoundryapplication/**")); } }