Commit dca637f5 authored by Phillip Webb's avatar Phillip Webb

Replace @ConditionalOnExpression with OnProperty

Replace where possible all @ConditionalOnExpression annotations with
@ConditionalOnProperty which is both faster to run and more descriptive.

Fixes gh-1685
parent 7b33f286
...@@ -54,8 +54,8 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter; ...@@ -54,8 +54,8 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration; import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
...@@ -124,21 +124,21 @@ public class CrshAutoConfiguration { ...@@ -124,21 +124,21 @@ public class CrshAutoConfiguration {
private ShellProperties properties; private ShellProperties properties;
@Bean @Bean
@ConditionalOnExpression("'${shell.auth:simple}' == 'jaas'") @ConditionalOnProperty(prefix = "shell", name = "auth", havingValue = "jaas")
@ConditionalOnMissingBean({ CrshShellAuthenticationProperties.class }) @ConditionalOnMissingBean({ CrshShellAuthenticationProperties.class })
public CrshShellAuthenticationProperties jaasAuthenticationProperties() { public CrshShellAuthenticationProperties jaasAuthenticationProperties() {
return new JaasAuthenticationProperties(); return new JaasAuthenticationProperties();
} }
@Bean @Bean
@ConditionalOnExpression("'${shell.auth:simple}' == 'key'") @ConditionalOnProperty(prefix = "shell", name = "auth", havingValue = "key")
@ConditionalOnMissingBean({ CrshShellAuthenticationProperties.class }) @ConditionalOnMissingBean({ CrshShellAuthenticationProperties.class })
public CrshShellAuthenticationProperties keyAuthenticationProperties() { public CrshShellAuthenticationProperties keyAuthenticationProperties() {
return new KeyAuthenticationProperties(); return new KeyAuthenticationProperties();
} }
@Bean @Bean
@ConditionalOnExpression("'${shell.auth:simple}' == 'simple'") @ConditionalOnProperty(prefix = "shell", name = "auth", havingValue = "simple", matchIfMissing = true)
@ConditionalOnMissingBean({ CrshShellAuthenticationProperties.class }) @ConditionalOnMissingBean({ CrshShellAuthenticationProperties.class })
public CrshShellAuthenticationProperties simpleAuthenticationProperties() { public CrshShellAuthenticationProperties simpleAuthenticationProperties() {
return new SimpleAuthenticationProperties(); return new SimpleAuthenticationProperties();
...@@ -156,7 +156,7 @@ public class CrshAutoConfiguration { ...@@ -156,7 +156,7 @@ public class CrshAutoConfiguration {
* Class to configure CRaSH to authenticate against Spring Security. * Class to configure CRaSH to authenticate against Spring Security.
*/ */
@Configuration @Configuration
@ConditionalOnExpression("'${shell.auth:spring}' == 'spring'") @ConditionalOnProperty(prefix = "shell", name = "auth", havingValue = "spring", matchIfMissing = true)
@ConditionalOnBean({ AuthenticationManager.class }) @ConditionalOnBean({ AuthenticationManager.class })
@AutoConfigureAfter(CrshAutoConfiguration.class) @AutoConfigureAfter(CrshAutoConfiguration.class)
public static class AuthenticationManagerAdapterAutoConfiguration { public static class AuthenticationManagerAdapterAutoConfiguration {
......
...@@ -23,12 +23,16 @@ import org.springframework.boot.actuate.endpoint.Endpoint; ...@@ -23,12 +23,16 @@ import org.springframework.boot.actuate.endpoint.Endpoint;
import org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter; import org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter;
import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
import org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration; import org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.type.AnnotatedTypeMetadata;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
/** /**
...@@ -67,4 +71,21 @@ public class EndpointMBeanExportAutoConfiguration { ...@@ -67,4 +71,21 @@ public class EndpointMBeanExportAutoConfiguration {
public MBeanServer mbeanServer() { public MBeanServer mbeanServer() {
return new JmxAutoConfiguration().mbeanServer(); return new JmxAutoConfiguration().mbeanServer();
} }
}
\ No newline at end of file static class JmxCondition extends SpringBootCondition {
@Override
public ConditionOutcome getMatchOutcome(ConditionContext context,
AnnotatedTypeMetadata metadata) {
String endpointEnabled = context.getEnvironment().getProperty(
"endpoints.jmx.enabled", "true");
String jmxEnabled = context.getEnvironment().getProperty(
"spring.jmx.enabled", "true");
return new ConditionOutcome("true".equalsIgnoreCase(endpointEnabled)
&& "true".equalsIgnoreCase(jmxEnabled),
"JMX endpoint and JMX enabled");
}
}
}
...@@ -47,8 +47,8 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; ...@@ -47,8 +47,8 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration; import org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration;
import org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration; import org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration;
...@@ -146,14 +146,14 @@ public class EndpointWebMvcAutoConfiguration implements ApplicationContextAware, ...@@ -146,14 +146,14 @@ public class EndpointWebMvcAutoConfiguration implements ApplicationContextAware,
@Bean @Bean
@ConditionalOnBean(EnvironmentEndpoint.class) @ConditionalOnBean(EnvironmentEndpoint.class)
@ConditionalOnExpression("${endpoints.env.enabled:true}") @ConditionalOnProperty(prefix = "endpoints.env", name = "enabled", matchIfMissing = true)
public EnvironmentMvcEndpoint environmentMvcEndpoint(EnvironmentEndpoint delegate) { public EnvironmentMvcEndpoint environmentMvcEndpoint(EnvironmentEndpoint delegate) {
return new EnvironmentMvcEndpoint(delegate); return new EnvironmentMvcEndpoint(delegate);
} }
@Bean @Bean
@ConditionalOnBean(HealthEndpoint.class) @ConditionalOnBean(HealthEndpoint.class)
@ConditionalOnExpression("${endpoints.health.enabled:true}") @ConditionalOnProperty(prefix = "endpoints.health", name = "enabled", matchIfMissing = true)
public HealthMvcEndpoint healthMvcEndpoint(HealthEndpoint delegate) { public HealthMvcEndpoint healthMvcEndpoint(HealthEndpoint delegate) {
HealthMvcEndpoint healthMvcEndpoint = new HealthMvcEndpoint(delegate); HealthMvcEndpoint healthMvcEndpoint = new HealthMvcEndpoint(delegate);
if (this.healthMvcEndpointProperties.getMapping() != null) { if (this.healthMvcEndpointProperties.getMapping() != null) {
...@@ -165,14 +165,14 @@ public class EndpointWebMvcAutoConfiguration implements ApplicationContextAware, ...@@ -165,14 +165,14 @@ public class EndpointWebMvcAutoConfiguration implements ApplicationContextAware,
@Bean @Bean
@ConditionalOnBean(MetricsEndpoint.class) @ConditionalOnBean(MetricsEndpoint.class)
@ConditionalOnExpression("${endpoints.metrics.enabled:true}") @ConditionalOnProperty(prefix = "endpoints.metrics", name = "enabled", matchIfMissing = true)
public MetricsMvcEndpoint metricsMvcEndpoint(MetricsEndpoint delegate) { public MetricsMvcEndpoint metricsMvcEndpoint(MetricsEndpoint delegate) {
return new MetricsMvcEndpoint(delegate); return new MetricsMvcEndpoint(delegate);
} }
@Bean @Bean
@ConditionalOnBean(ShutdownEndpoint.class) @ConditionalOnBean(ShutdownEndpoint.class)
@ConditionalOnExpression("${endpoints.shutdown.enabled:false}") @ConditionalOnProperty(prefix = "endpoints.shutdown", name = "enabled", matchIfMissing = true)
public ShutdownMvcEndpoint shutdownMvcEndpoint(ShutdownEndpoint delegate) { public ShutdownMvcEndpoint shutdownMvcEndpoint(ShutdownEndpoint delegate) {
return new ShutdownMvcEndpoint(delegate); return new ShutdownMvcEndpoint(delegate);
} }
......
...@@ -44,8 +44,8 @@ import org.springframework.boot.autoconfigure.AutoConfigureBefore; ...@@ -44,8 +44,8 @@ import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadata; import org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadata;
import org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvider; import org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvider;
...@@ -96,7 +96,7 @@ public class HealthIndicatorAutoConfiguration { ...@@ -96,7 +96,7 @@ public class HealthIndicatorAutoConfiguration {
@Configuration @Configuration
@ConditionalOnBean(DataSource.class) @ConditionalOnBean(DataSource.class)
@ConditionalOnExpression("${health.db.enabled:true}") @ConditionalOnProperty(prefix = "health.db", name = "enabled", matchIfMissing = true)
public static class DataSourcesHealthIndicatorConfiguration { public static class DataSourcesHealthIndicatorConfiguration {
@Autowired @Autowired
...@@ -143,7 +143,7 @@ public class HealthIndicatorAutoConfiguration { ...@@ -143,7 +143,7 @@ public class HealthIndicatorAutoConfiguration {
@Configuration @Configuration
@ConditionalOnBean(MongoTemplate.class) @ConditionalOnBean(MongoTemplate.class)
@ConditionalOnExpression("${health.mongo.enabled:true}") @ConditionalOnProperty(prefix = "health.mongo", name = "enabled", matchIfMissing = true)
public static class MongoHealthIndicatorConfiguration { public static class MongoHealthIndicatorConfiguration {
@Autowired @Autowired
...@@ -172,7 +172,7 @@ public class HealthIndicatorAutoConfiguration { ...@@ -172,7 +172,7 @@ public class HealthIndicatorAutoConfiguration {
@Configuration @Configuration
@ConditionalOnBean(RedisConnectionFactory.class) @ConditionalOnBean(RedisConnectionFactory.class)
@ConditionalOnExpression("${health.redis.enabled:true}") @ConditionalOnProperty(prefix = "health.redis", name = "enabled", matchIfMissing = true)
public static class RedisHealthIndicatorConfiguration { public static class RedisHealthIndicatorConfiguration {
@Autowired @Autowired
...@@ -202,7 +202,7 @@ public class HealthIndicatorAutoConfiguration { ...@@ -202,7 +202,7 @@ public class HealthIndicatorAutoConfiguration {
@Configuration @Configuration
@ConditionalOnBean(RabbitTemplate.class) @ConditionalOnBean(RabbitTemplate.class)
@ConditionalOnExpression("${health.rabbit.enabled:true}") @ConditionalOnProperty(prefix = "health.rabbit", name = "enabled", matchIfMissing = true)
public static class RabbitHealthIndicatorConfiguration { public static class RabbitHealthIndicatorConfiguration {
@Autowired @Autowired
...@@ -232,7 +232,7 @@ public class HealthIndicatorAutoConfiguration { ...@@ -232,7 +232,7 @@ public class HealthIndicatorAutoConfiguration {
@Configuration @Configuration
@ConditionalOnBean(SolrServer.class) @ConditionalOnBean(SolrServer.class)
@ConditionalOnExpression("${health.solr.enabled:true}") @ConditionalOnProperty(prefix = "health.solr", name = "enabled", matchIfMissing = true)
public static class SolrHealthIndicatorConfiguration { public static class SolrHealthIndicatorConfiguration {
@Autowired @Autowired
...@@ -260,7 +260,7 @@ public class HealthIndicatorAutoConfiguration { ...@@ -260,7 +260,7 @@ public class HealthIndicatorAutoConfiguration {
} }
@Configuration @Configuration
@ConditionalOnExpression("${health.diskspace.enabled:true}") @ConditionalOnProperty(prefix = "health.diskspace", name = "enabled", matchIfMissing = true)
public static class DiskSpaceHealthIndicatorConfiguration { public static class DiskSpaceHealthIndicatorConfiguration {
@Bean @Bean
......
...@@ -25,8 +25,8 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter; ...@@ -25,8 +25,8 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration; import org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
...@@ -54,7 +54,7 @@ import org.springframework.context.annotation.Configuration; ...@@ -54,7 +54,7 @@ import org.springframework.context.annotation.Configuration;
@Configuration @Configuration
@ConditionalOnWebApplication @ConditionalOnWebApplication
@ConditionalOnClass({ AgentServlet.class }) @ConditionalOnClass({ AgentServlet.class })
@ConditionalOnExpression("${endpoints.jolokia.enabled:true}") @ConditionalOnProperty(prefix = "endpoints.jolokia", name = "enabled", matchIfMissing = true)
@AutoConfigureBefore(ManagementSecurityAutoConfiguration.class) @AutoConfigureBefore(ManagementSecurityAutoConfiguration.class)
@AutoConfigureAfter(EmbeddedServletContainerAutoConfiguration.class) @AutoConfigureAfter(EmbeddedServletContainerAutoConfiguration.class)
@EnableConfigurationProperties(JolokiaProperties.class) @EnableConfigurationProperties(JolokiaProperties.class)
......
...@@ -30,10 +30,12 @@ import org.springframework.boot.actuate.endpoint.mvc.MvcEndpoint; ...@@ -30,10 +30,12 @@ import org.springframework.boot.actuate.endpoint.mvc.MvcEndpoint;
import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
import org.springframework.boot.autoconfigure.security.AuthenticationManagerConfiguration; import org.springframework.boot.autoconfigure.security.AuthenticationManagerConfiguration;
import org.springframework.boot.autoconfigure.security.FallbackWebSecurityAutoConfiguration; import org.springframework.boot.autoconfigure.security.FallbackWebSecurityAutoConfiguration;
import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration; import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration;
...@@ -44,8 +46,11 @@ import org.springframework.boot.autoconfigure.web.ErrorController; ...@@ -44,8 +46,11 @@ import org.springframework.boot.autoconfigure.web.ErrorController;
import org.springframework.boot.autoconfigure.web.ServerProperties; import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.core.type.AnnotatedTypeMetadata;
import org.springframework.security.config.annotation.web.WebSecurityConfigurer; import org.springframework.security.config.annotation.web.WebSecurityConfigurer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity; import org.springframework.security.config.annotation.web.builders.WebSecurity;
...@@ -165,16 +170,35 @@ public class ManagementSecurityAutoConfiguration { ...@@ -165,16 +170,35 @@ public class ManagementSecurityAutoConfiguration {
} }
@Configuration @Configuration
@ConditionalOnExpression("${management.security.enabled:true} && !${security.basic.enabled:true}")
@ConditionalOnMissingBean(WebSecurityConfiguration.class) @ConditionalOnMissingBean(WebSecurityConfiguration.class)
@ConditionalOnWebApplication @ConditionalOnWebApplication
@Conditional(WebSecurityEnablerCondition.class)
@EnableWebSecurity @EnableWebSecurity
protected static class WebSecurityEnabler extends AuthenticationManagerConfiguration { protected static class WebSecurityEnabler extends AuthenticationManagerConfiguration {
} }
/**
* WebSecurityEnabler condition
*/
static class WebSecurityEnablerCondition extends SpringBootCondition {
@Override
public ConditionOutcome getMatchOutcome(ConditionContext context,
AnnotatedTypeMetadata metadata) {
String managementEnabled = context.getEnvironment().getProperty(
"management.security.enabled", "true");
String basicEnabled = context.getEnvironment().getProperty(
"security.basic.enabled", "true");
return new ConditionOutcome("true".equalsIgnoreCase(managementEnabled)
&& !"true".equalsIgnoreCase(basicEnabled),
"Management security enabled and basic disabled");
}
}
@Configuration @Configuration
@ConditionalOnMissingBean({ ManagementWebSecurityConfigurerAdapter.class }) @ConditionalOnMissingBean({ ManagementWebSecurityConfigurerAdapter.class })
@ConditionalOnExpression("${management.security.enabled:true}") @ConditionalOnProperty(prefix = "management.security", name = "enabled", matchIfMissing = true)
@ConditionalOnWebApplication @ConditionalOnWebApplication
@Order(ManagementServerProperties.BASIC_AUTH_ORDER) @Order(ManagementServerProperties.BASIC_AUTH_ORDER)
protected static class ManagementWebSecurityConfigurerAdapter extends protected static class ManagementWebSecurityConfigurerAdapter extends
......
...@@ -25,8 +25,8 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate; ...@@ -25,8 +25,8 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
...@@ -80,7 +80,7 @@ import com.rabbitmq.client.Channel; ...@@ -80,7 +80,7 @@ import com.rabbitmq.client.Channel;
public class RabbitAutoConfiguration { public class RabbitAutoConfiguration {
@Bean @Bean
@ConditionalOnExpression("${spring.rabbitmq.dynamic:true}") @ConditionalOnProperty(prefix = "spring.rabbitmq", name = "dynamic", matchIfMissing = true)
@ConditionalOnMissingBean(AmqpAdmin.class) @ConditionalOnMissingBean(AmqpAdmin.class)
public AmqpAdmin amqpAdmin(CachingConnectionFactory connectionFactory) { public AmqpAdmin amqpAdmin(CachingConnectionFactory connectionFactory) {
return new RabbitAdmin(connectionFactory); return new RabbitAdmin(connectionFactory);
......
...@@ -94,7 +94,7 @@ public @interface ConditionalOnProperty { ...@@ -94,7 +94,7 @@ public @interface ConditionalOnProperty {
String prefix() default ""; String prefix() default "";
/** /**
* The name of the properties to test.If a prefix has been defined, it is applied to * The name of the properties to test. If a prefix has been defined, it is applied to
* compute the full key of each property. For instance if the prefix is * compute the full key of each property. For instance if the prefix is
* {@code app.config} and one value is {@code my-value}, the fully key would be * {@code app.config} and one value is {@code my-value}, the fully key would be
* {@code app.config.my-value} * {@code app.config.my-value}
......
...@@ -26,8 +26,8 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter; ...@@ -26,8 +26,8 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.data.jpa.EntityManagerFactoryDependsOnPostProcessor; import org.springframework.boot.autoconfigure.data.jpa.EntityManagerFactoryDependsOnPostProcessor;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
...@@ -51,7 +51,7 @@ import org.springframework.util.Assert; ...@@ -51,7 +51,7 @@ import org.springframework.util.Assert;
@Configuration @Configuration
@ConditionalOnClass(Flyway.class) @ConditionalOnClass(Flyway.class)
@ConditionalOnBean(DataSource.class) @ConditionalOnBean(DataSource.class)
@ConditionalOnExpression("${flyway.enabled:true}") @ConditionalOnProperty(prefix = "flyway", name = "enabled", matchIfMissing = true)
@AutoConfigureAfter(DataSourceAutoConfiguration.class) @AutoConfigureAfter(DataSourceAutoConfiguration.class)
public class FlywayAutoConfiguration { public class FlywayAutoConfiguration {
......
...@@ -27,8 +27,8 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter; ...@@ -27,8 +27,8 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.data.jpa.EntityManagerFactoryDependsOnPostProcessor; import org.springframework.boot.autoconfigure.data.jpa.EntityManagerFactoryDependsOnPostProcessor;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
...@@ -54,7 +54,7 @@ import org.springframework.util.Assert; ...@@ -54,7 +54,7 @@ import org.springframework.util.Assert;
@Configuration @Configuration
@ConditionalOnClass(SpringLiquibase.class) @ConditionalOnClass(SpringLiquibase.class)
@ConditionalOnBean(DataSource.class) @ConditionalOnBean(DataSource.class)
@ConditionalOnExpression("${liquibase.enabled:true}") @ConditionalOnProperty(prefix = "liquibase", name = "enabled", matchIfMissing = true)
@AutoConfigureAfter(DataSourceAutoConfiguration.class) @AutoConfigureAfter(DataSourceAutoConfiguration.class)
public class LiquibaseAutoConfiguration { public class LiquibaseAutoConfiguration {
......
...@@ -19,8 +19,8 @@ package org.springframework.boot.autoconfigure.security; ...@@ -19,8 +19,8 @@ package org.springframework.boot.autoconfigure.security;
import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration;
...@@ -35,7 +35,7 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur ...@@ -35,7 +35,7 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur
* *
* @author Dave Syer * @author Dave Syer
*/ */
@ConditionalOnExpression("!${security.basic.enabled:true}") @ConditionalOnProperty(prefix = "security.basic", name = "enabled", havingValue = "false")
@ConditionalOnBean(WebSecurityConfigurerAdapter.class) @ConditionalOnBean(WebSecurityConfigurerAdapter.class)
@ConditionalOnClass(EnableWebSecurity.class) @ConditionalOnClass(EnableWebSecurity.class)
@ConditionalOnMissingBean(WebSecurityConfiguration.class) @ConditionalOnMissingBean(WebSecurityConfiguration.class)
......
...@@ -25,9 +25,9 @@ import javax.servlet.http.HttpServletRequest; ...@@ -25,9 +25,9 @@ import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.security.SecurityProperties.Headers; import org.springframework.boot.autoconfigure.security.SecurityProperties.Headers;
import org.springframework.boot.autoconfigure.web.ErrorController; import org.springframework.boot.autoconfigure.web.ErrorController;
...@@ -192,8 +192,8 @@ public class SpringBootWebSecurityConfiguration { ...@@ -192,8 +192,8 @@ public class SpringBootWebSecurityConfiguration {
} }
@ConditionalOnExpression("!${security.basic.enabled:true}")
@Configuration @Configuration
@ConditionalOnProperty(prefix = "security.basic", name = "enabled", havingValue = "false")
@Order(SecurityProperties.BASIC_AUTH_ORDER) @Order(SecurityProperties.BASIC_AUTH_ORDER)
protected static class ApplicationNoWebSecurityConfigurerAdapter extends protected static class ApplicationNoWebSecurityConfigurerAdapter extends
WebSecurityConfigurerAdapter { WebSecurityConfigurerAdapter {
...@@ -208,8 +208,8 @@ public class SpringBootWebSecurityConfiguration { ...@@ -208,8 +208,8 @@ public class SpringBootWebSecurityConfiguration {
} }
} }
@ConditionalOnExpression("${security.basic.enabled:true}")
@Configuration @Configuration
@ConditionalOnProperty(prefix = "security.basic", name = "enabled", matchIfMissing = true)
@Order(SecurityProperties.BASIC_AUTH_ORDER) @Order(SecurityProperties.BASIC_AUTH_ORDER)
protected static class ApplicationWebSecurityConfigurerAdapter extends protected static class ApplicationWebSecurityConfigurerAdapter extends
WebSecurityConfigurerAdapter { WebSecurityConfigurerAdapter {
......
...@@ -30,8 +30,8 @@ import org.springframework.boot.autoconfigure.AutoConfigureBefore; ...@@ -30,8 +30,8 @@ import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionOutcome; import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.condition.SearchStrategy; import org.springframework.boot.autoconfigure.condition.SearchStrategy;
import org.springframework.boot.autoconfigure.condition.SpringBootCondition; import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
...@@ -97,7 +97,7 @@ public class ErrorMvcAutoConfiguration implements EmbeddedServletContainerCustom ...@@ -97,7 +97,7 @@ public class ErrorMvcAutoConfiguration implements EmbeddedServletContainerCustom
} }
@Configuration @Configuration
@ConditionalOnExpression("${error.whitelabel.enabled:true}") @ConditionalOnProperty(prefix = "error.whitelable", name = "enabled", matchIfMissing = true)
@Conditional(ErrorTemplateMissingCondition.class) @Conditional(ErrorTemplateMissingCondition.class)
protected static class WhitelabelErrorViewConfiguration { protected static class WhitelabelErrorViewConfiguration {
......
...@@ -22,8 +22,8 @@ import javax.servlet.Servlet; ...@@ -22,8 +22,8 @@ import javax.servlet.Servlet;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.embedded.EmbeddedWebApplicationContext; import org.springframework.boot.context.embedded.EmbeddedWebApplicationContext;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
...@@ -46,7 +46,7 @@ import org.springframework.web.multipart.support.StandardServletMultipartResolve ...@@ -46,7 +46,7 @@ import org.springframework.web.multipart.support.StandardServletMultipartResolve
@Configuration @Configuration
@ConditionalOnClass({ Servlet.class, StandardServletMultipartResolver.class, @ConditionalOnClass({ Servlet.class, StandardServletMultipartResolver.class,
MultipartConfigElement.class }) MultipartConfigElement.class })
@ConditionalOnExpression("${multipart.enabled:true}") @ConditionalOnProperty(prefix = "multipart", name = "enabled", matchIfMissing = true)
@EnableConfigurationProperties(MultipartProperties.class) @EnableConfigurationProperties(MultipartProperties.class)
public class MultipartAutoConfiguration { public class MultipartAutoConfiguration {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment