|
|
|
|
@ -36,6 +36,7 @@ import org.springframework.beans.factory.support.BeanDefinitionRegistry;
@@ -36,6 +36,7 @@ import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
|
|
|
|
import org.springframework.boot.autoconfigure.jdbc.DataSourceSchemaCreatedEvent; |
|
|
|
|
import org.springframework.boot.jdbc.EmbeddedDatabaseConnection; |
|
|
|
|
import org.springframework.context.ApplicationContext; |
|
|
|
|
import org.springframework.context.ApplicationContextAware; |
|
|
|
|
import org.springframework.context.ApplicationListener; |
|
|
|
|
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; |
|
|
|
|
import org.springframework.context.event.ContextRefreshedEvent; |
|
|
|
|
@ -136,12 +137,17 @@ class DataSourceInitializedPublisher implements BeanPostProcessor {
@@ -136,12 +137,17 @@ class DataSourceInitializedPublisher implements BeanPostProcessor {
|
|
|
|
|
* blocks until any asynchronous DataSource initialization has completed. |
|
|
|
|
*/ |
|
|
|
|
static class DataSourceInitializationCompletionListener |
|
|
|
|
implements ApplicationListener<ContextRefreshedEvent>, Ordered { |
|
|
|
|
implements ApplicationListener<ContextRefreshedEvent>, Ordered, ApplicationContextAware { |
|
|
|
|
|
|
|
|
|
private volatile ApplicationContext applicationContext; |
|
|
|
|
|
|
|
|
|
private volatile Future<?> dataSourceInitialization; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void onApplicationEvent(ContextRefreshedEvent event) { |
|
|
|
|
if (!event.getApplicationContext().equals(this.applicationContext)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
Future<?> dataSourceInitialization = this.dataSourceInitialization; |
|
|
|
|
if (dataSourceInitialization != null) { |
|
|
|
|
try { |
|
|
|
|
@ -158,6 +164,11 @@ class DataSourceInitializedPublisher implements BeanPostProcessor {
@@ -158,6 +164,11 @@ class DataSourceInitializedPublisher implements BeanPostProcessor {
|
|
|
|
|
return Ordered.HIGHEST_PRECEDENCE; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void setApplicationContext(ApplicationContext applicationContext) { |
|
|
|
|
this.applicationContext = applicationContext; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|