2929
3030import org .springframework .beans .factory .BeanFactory ;
3131import org .springframework .beans .factory .ObjectProvider ;
32+ import org .springframework .beans .factory .annotation .Qualifier ;
3233import org .springframework .boot .autoconfigure .AutoConfigurationPackages ;
3334import org .springframework .boot .autoconfigure .EnableAutoConfiguration ;
3435import org .springframework .boot .autoconfigure .condition .ConditionalOnBooleanProperty ;
@@ -124,8 +125,9 @@ public JpaVendorAdapter jpaVendorAdapter() {
124125 public EntityManagerFactoryBuilder entityManagerFactoryBuilder (JpaVendorAdapter jpaVendorAdapter ,
125126 ObjectProvider <PersistenceUnitManager > persistenceUnitManager ,
126127 ObjectProvider <EntityManagerFactoryBuilderCustomizer > customizers ,
127- Map <String , AsyncTaskExecutor > taskExecutors ) {
128- @ Nullable AsyncTaskExecutor bootstrapExecutor = determineBootstrapExecutor (taskExecutors );
128+ ObjectProvider <AsyncTaskExecutor > taskExecutors ,
129+ @ Qualifier (TaskExecutionAutoConfiguration .APPLICATION_TASK_EXECUTOR_BEAN_NAME ) ObjectProvider <AsyncTaskExecutor > applicationTaskExecutor ) {
130+ @ Nullable AsyncTaskExecutor bootstrapExecutor = determineBootstrapExecutor (taskExecutors , applicationTaskExecutor );
129131 EntityManagerFactoryBuilder builder = new EntityManagerFactoryBuilder (jpaVendorAdapter ,
130132 this ::buildJpaProperties , persistenceUnitManager .getIfAvailable (), null , bootstrapExecutor );
131133 if (this .properties .getBootstrap () == Bootstrap .ASYNC ) {
@@ -136,9 +138,10 @@ public EntityManagerFactoryBuilder entityManagerFactoryBuilder(JpaVendorAdapter
136138 return builder ;
137139 }
138140
139- private @ Nullable AsyncTaskExecutor determineBootstrapExecutor (Map <String , AsyncTaskExecutor > taskExecutors ) {
140- return (taskExecutors .size () == 1 ) ? taskExecutors .values ().iterator ().next ()
141- : taskExecutors .get (TaskExecutionAutoConfiguration .APPLICATION_TASK_EXECUTOR_BEAN_NAME );
141+ private @ Nullable AsyncTaskExecutor determineBootstrapExecutor (ObjectProvider <AsyncTaskExecutor > taskExecutors ,
142+ ObjectProvider <AsyncTaskExecutor > applicationTaskExecutor ) {
143+ @ Nullable AsyncTaskExecutor asyncTaskExecutor = taskExecutors .getIfUnique ();
144+ return (asyncTaskExecutor != null ) ? asyncTaskExecutor : applicationTaskExecutor .getIfAvailable ();
142145 }
143146
144147 private Map <String , ?> buildJpaProperties (DataSource dataSource ) {
0 commit comments