From 6c22e0ab6e397d6158d1e29c2c91c2227ebc3d47 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Thu, 30 May 2013 14:20:24 +0100 Subject: [PATCH] [bs-140] Extract framework-provided @ConfigurationProperties into @Bean Allows @ConfigurationProperties beans to be declared explicitly (to set default values) [#50804109] --- .../ActuatorAutoConfiguration.java | 8 +++++++- .../SecurityAutoConfiguration.java | 19 +++++++++++++------ .../web/ServerPropertiesConfiguration.java | 10 +++++++++- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/ActuatorAutoConfiguration.java b/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/ActuatorAutoConfiguration.java index 95145b22a3..08819242c7 100644 --- a/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/ActuatorAutoConfiguration.java +++ b/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/ActuatorAutoConfiguration.java @@ -40,9 +40,15 @@ public class ActuatorAutoConfiguration { * ServerProperties has to be declared in a non-conditional bean, so that it gets * added to the context early enough */ - @EnableConfigurationProperties(ManagementServerProperties.class) + @EnableConfigurationProperties public static class ServerPropertiesConfiguration { + @ConditionalOnMissingBean(ManagementServerProperties.class) + @Bean(name = "org.springframework.bootstrap.actuate.properties.ManagementServerProperties") + public ManagementServerProperties managementServerProperties() { + return new ManagementServerProperties(); + } + @Bean @ConditionalOnMissingBean(EndpointsProperties.class) public EndpointsProperties endpointsProperties() { diff --git a/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/SecurityAutoConfiguration.java b/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/SecurityAutoConfiguration.java index bf9f561cfa..627398a3be 100644 --- a/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/SecurityAutoConfiguration.java +++ b/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/SecurityAutoConfiguration.java @@ -42,9 +42,15 @@ import org.springframework.security.web.authentication.www.BasicAuthenticationEn @Configuration @ConditionalOnClass({ EnableWebSecurity.class }) @EnableWebSecurity -@EnableConfigurationProperties(SecurityProperties.class) +@EnableConfigurationProperties public class SecurityAutoConfiguration { + @ConditionalOnMissingBean(SecurityProperties.class) + @Bean(name = "org.springframework.bootstrap.actuate.properties.SecurityProperties") + public SecurityProperties securityProperties() { + return new SecurityProperties(); + } + @Bean @ConditionalOnMissingBean({ AuthenticationEventPublisher.class }) public AuthenticationEventPublisher authenticationEventPublisher() { @@ -74,11 +80,12 @@ public class SecurityAutoConfiguration { http.requiresChannel().antMatchers("/**").requiresSecure(); } if (this.security.getBasic().isEnabled()) { - http.authenticationEntryPoint(entryPoint()) - .antMatcher(this.security.getBasic().getPath()).httpBasic() - .authenticationEntryPoint(entryPoint()).and().anonymous() - .disable(); - http.authorizeUrls().antMatchers("/**") + HttpConfiguration matcher = http.antMatcher(this.security.getBasic() + .getPath()); + matcher.authenticationEntryPoint(entryPoint()).antMatcher("/**") + .httpBasic().authenticationEntryPoint(entryPoint()).and() + .anonymous().disable(); + matcher.authorizeUrls().antMatchers("/**") .hasRole(this.security.getBasic().getRole()); } // No cookies for service endpoints by default diff --git a/spring-bootstrap/src/main/java/org/springframework/bootstrap/autoconfigure/web/ServerPropertiesConfiguration.java b/spring-bootstrap/src/main/java/org/springframework/bootstrap/autoconfigure/web/ServerPropertiesConfiguration.java index 6641d00895..4aa55cfc73 100644 --- a/spring-bootstrap/src/main/java/org/springframework/bootstrap/autoconfigure/web/ServerPropertiesConfiguration.java +++ b/spring-bootstrap/src/main/java/org/springframework/bootstrap/autoconfigure/web/ServerPropertiesConfiguration.java @@ -19,12 +19,14 @@ import org.apache.catalina.valves.AccessLogValve; import org.apache.catalina.valves.RemoteIpValve; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.bootstrap.context.annotation.ConditionalOnMissingBean; import org.springframework.bootstrap.context.annotation.EnableConfigurationProperties; import org.springframework.bootstrap.context.embedded.ConfigurableEmbeddedServletContainerFactory; import org.springframework.bootstrap.context.embedded.EmbeddedServletContainerCustomizer; import org.springframework.bootstrap.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; import org.springframework.bootstrap.properties.ServerProperties; import org.springframework.bootstrap.properties.ServerProperties.Tomcat; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.util.StringUtils; @@ -33,12 +35,18 @@ import org.springframework.util.StringUtils; * */ @Configuration -@EnableConfigurationProperties(ServerProperties.class) +@EnableConfigurationProperties public class ServerPropertiesConfiguration implements EmbeddedServletContainerCustomizer { @Autowired private BeanFactory beanFactory; + @ConditionalOnMissingBean(ServerProperties.class) + @Bean(name = "org.springframework.bootstrap.properties.ServerProperties") + public ServerProperties serverProperties() { + return new ServerProperties(); + } + @Override public void customize(ConfigurableEmbeddedServletContainerFactory factory) {