diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceInitializer.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceInitializer.java index acd1d9173b..a93002fecd 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceInitializer.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceInitializer.java @@ -26,8 +26,8 @@ import javax.sql.DataSource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationListener; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.io.Resource; import org.springframework.jdbc.datasource.init.DatabasePopulatorUtils; import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; @@ -48,7 +48,7 @@ class DataSourceInitializer implements ApplicationListener scripts = getScripts(this.properties.getSchema(), "schema"); if (!scripts.isEmpty()) { runScripts(scripts); - this.applicationContext.publishEvent(new DataSourceInitializedEvent( - this.dataSource)); + try { + this.applicationContext.publishEvent(new DataSourceInitializedEvent( + this.dataSource)); + } + catch (IllegalStateException e) { + logger.warn("Could not send event to complete DataSource initialization (" + + e.getMessage() + ")"); + } } } diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceInitializerPostProcessor.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceInitializerPostProcessor.java index 903febe14c..8a686f358f 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceInitializerPostProcessor.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceInitializerPostProcessor.java @@ -26,6 +26,7 @@ import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.GenericBeanDefinition; import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; +import org.springframework.core.Ordered; import org.springframework.core.type.AnnotationMetadata; /** @@ -35,7 +36,14 @@ import org.springframework.core.type.AnnotationMetadata; * @author Dave Syer * @since 1.1.2 */ -class DataSourceInitializerPostProcessor implements BeanPostProcessor { +class DataSourceInitializerPostProcessor implements BeanPostProcessor, Ordered { + + private int order = Ordered.HIGHEST_PRECEDENCE; + + @Override + public int getOrder() { + return this.order; + } @Autowired private BeanFactory beanFactory;