@@ -1099,11 +1099,10 @@ public void preInstantiateSingletons() throws BeansException {
10991099 List <String > beanNames = new ArrayList <>(this .beanDefinitionNames );
11001100
11011101 // Trigger initialization of all non-lazy singleton beans...
1102- List <CompletableFuture <?>> futures = new ArrayList <>();
1103-
11041102 this .preInstantiationThread .set (PreInstantiation .MAIN );
11051103 this .mainThreadPrefix = getThreadNamePrefix ();
11061104 try {
1105+ List <CompletableFuture <?>> futures = new ArrayList <>();
11071106 for (String beanName : beanNames ) {
11081107 RootBeanDefinition mbd = getMergedLocalBeanDefinition (beanName );
11091108 if (!mbd .isAbstract () && mbd .isSingleton ()) {
@@ -1113,21 +1112,20 @@ public void preInstantiateSingletons() throws BeansException {
11131112 }
11141113 }
11151114 }
1115+ if (!futures .isEmpty ()) {
1116+ try {
1117+ CompletableFuture .allOf (futures .toArray (new CompletableFuture <?>[0 ])).join ();
1118+ }
1119+ catch (CompletionException ex ) {
1120+ ReflectionUtils .rethrowRuntimeException (ex .getCause ());
1121+ }
1122+ }
11161123 }
11171124 finally {
11181125 this .mainThreadPrefix = null ;
11191126 this .preInstantiationThread .remove ();
11201127 }
11211128
1122- if (!futures .isEmpty ()) {
1123- try {
1124- CompletableFuture .allOf (futures .toArray (new CompletableFuture <?>[0 ])).join ();
1125- }
1126- catch (CompletionException ex ) {
1127- ReflectionUtils .rethrowRuntimeException (ex .getCause ());
1128- }
1129- }
1130-
11311129 // Trigger post-initialization callback for all applicable beans...
11321130 for (String beanName : beanNames ) {
11331131 Object singletonInstance = getSingleton (beanName , false );
0 commit comments