diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java b/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java index 8b987724..89e56f7a 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java @@ -27,7 +27,6 @@ import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.BeanDefinitionHolder; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor; import org.springframework.boot.autoconfigure.AutoConfigureAfter; @@ -62,24 +61,9 @@ import org.springframework.stereotype.Component; @AutoConfigureAfter(WebMvcAutoConfiguration.class) public class RefreshAutoConfiguration { - @Component - @ConditionalOnMissingBean(RefreshScope.class) - protected static class RefreshScopeConfiguration - implements BeanDefinitionRegistryPostProcessor { - - @Override - public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) - throws BeansException { - } - - @Override - public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) - throws BeansException { - registry.registerBeanDefinition("refreshScope", - BeanDefinitionBuilder.genericBeanDefinition(RefreshScope.class) - .setRole(BeanDefinition.ROLE_INFRASTRUCTURE) - .getBeanDefinition()); - } + @Bean + public static RefreshScope refreshScope() { + return new RefreshScope(); } @Component @@ -126,6 +110,7 @@ public class RefreshAutoConfiguration { BeanDefinitionHolder proxy = ScopedProxyUtils .createScopedProxy(holder, registry, true); definition.setScope("refresh"); + definition.setLazyInit(true); registry.registerBeanDefinition(proxy.getBeanName(), proxy.getBeanDefinition()); } diff --git a/spring-cloud-context/src/test/java/org/springframework/cloud/autoconfigure/JdbcConfigurationTests.java b/spring-cloud-context/src/test/java/org/springframework/cloud/autoconfigure/JdbcConfigurationTests.java new file mode 100644 index 00000000..624c2a2c --- /dev/null +++ b/spring-cloud-context/src/test/java/org/springframework/cloud/autoconfigure/JdbcConfigurationTests.java @@ -0,0 +1,53 @@ +/* + * Copyright 2016-2017 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.autoconfigure; + +import org.junit.Test; + +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.WebApplicationType; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Import; + +/** + * @author Dave Syer + * + */ +public class JdbcConfigurationTests { + + @Test + public void schemaApplied() { + new SpringApplicationBuilder(BrokenApplication.class).web(WebApplicationType.NONE) + .run("--spring.datasource.initialization-mode=always").close(); + } + + @SpringBootConfiguration + @EnableConfigurationProperties(DataSourceProperties.class) + @Import({ DataSourceAutoConfiguration.class, RefreshAutoConfiguration.class }) + protected static class BrokenApplication { + + public static void main(String[] args) { + new SpringApplicationBuilder(BrokenApplication.class) + .web(WebApplicationType.NONE).run(args); + } + + } + +} diff --git a/spring-cloud-context/src/test/resources/data.sql b/spring-cloud-context/src/test/resources/data.sql new file mode 100644 index 00000000..a72ec93b --- /dev/null +++ b/spring-cloud-context/src/test/resources/data.sql @@ -0,0 +1,6 @@ +INSERT INTO foos (value) +VALUES + ('ITEM1') +,('ITEM2') +,('ITEM3') +;