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.
This commit is contained in:
Dave Syer 2016-12-12 15:05:48 +00:00
parent cc8ecb6ff5
commit 1baf3c63c4
Notes: Phillip Webb 2016-12-20 10:58:09 -08:00
Fixes gh-7622

View File

@ -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/**"));
}
}