|
|
|
|
@ -59,6 +59,7 @@ import org.springframework.context.annotation.ClassPathBeanDefinitionScanner;
@@ -59,6 +59,7 @@ import org.springframework.context.annotation.ClassPathBeanDefinitionScanner;
|
|
|
|
|
import org.springframework.context.support.AbstractApplicationContext; |
|
|
|
|
import org.springframework.context.support.GenericApplicationContext; |
|
|
|
|
import org.springframework.core.GenericTypeResolver; |
|
|
|
|
import org.springframework.core.NativeDetector; |
|
|
|
|
import org.springframework.core.Ordered; |
|
|
|
|
import org.springframework.core.annotation.AnnotationAwareOrderComparator; |
|
|
|
|
import org.springframework.core.annotation.Order; |
|
|
|
|
@ -371,6 +372,7 @@ public class SpringApplication {
@@ -371,6 +372,7 @@ public class SpringApplication {
|
|
|
|
|
ApplicationArguments applicationArguments, Banner printedBanner) { |
|
|
|
|
context.setEnvironment(environment); |
|
|
|
|
postProcessApplicationContext(context); |
|
|
|
|
addAotGeneratedInitializerIfNecessary(this.initializers); |
|
|
|
|
applyInitializers(context); |
|
|
|
|
listeners.contextPrepared(context); |
|
|
|
|
bootstrapContext.close(context); |
|
|
|
|
@ -394,13 +396,30 @@ public class SpringApplication {
@@ -394,13 +396,30 @@ public class SpringApplication {
|
|
|
|
|
if (this.lazyInitialization) { |
|
|
|
|
context.addBeanFactoryPostProcessor(new LazyInitializationBeanFactoryPostProcessor()); |
|
|
|
|
} |
|
|
|
|
// Load the sources
|
|
|
|
|
Set<Object> sources = getAllSources(); |
|
|
|
|
Assert.notEmpty(sources, "Sources must not be empty"); |
|
|
|
|
load(context, sources.toArray(new Object[0])); |
|
|
|
|
if (!NativeDetector.inNativeImage()) { |
|
|
|
|
// Load the sources
|
|
|
|
|
Set<Object> sources = getAllSources(); |
|
|
|
|
Assert.notEmpty(sources, "Sources must not be empty"); |
|
|
|
|
load(context, sources.toArray(new Object[0])); |
|
|
|
|
} |
|
|
|
|
listeners.contextLoaded(context); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void addAotGeneratedInitializerIfNecessary(List<ApplicationContextInitializer<?>> initializers) { |
|
|
|
|
if (NativeDetector.inNativeImage()) { |
|
|
|
|
try { |
|
|
|
|
Class<?> aClass = Class.forName(this.mainApplicationClass.getName() + "__ApplicationContextInitializer", |
|
|
|
|
true, getClassLoader()); |
|
|
|
|
ApplicationContextInitializer<?> initializer = (ApplicationContextInitializer<?>) aClass |
|
|
|
|
.getDeclaredConstructor().newInstance(); |
|
|
|
|
initializers.add(0, initializer); |
|
|
|
|
} |
|
|
|
|
catch (Exception ex) { |
|
|
|
|
throw new IllegalArgumentException("Failed to load AOT-generated ApplicationContextInitializer", ex); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean refreshContext(ConfigurableApplicationContext context) { |
|
|
|
|
if (!SpringApplicationHooks.hooks().preRefresh(this, context)) { |
|
|
|
|
return false; |
|
|
|
|
|