下面列出了org.springframework.boot.SpringApplication#getInitializers ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void addAncestorInitializer(SpringApplication application,
ConfigurableApplicationContext context) {
boolean installed = false;
for (ApplicationContextInitializer<?> initializer : application
.getInitializers()) {
if (initializer instanceof AncestorInitializer) {
installed = true;
// New parent
((AncestorInitializer) initializer).setParent(context);
}
}
if (!installed) {
application.addInitializers(new AncestorInitializer(context));
}
}
@SuppressWarnings("unchecked")
private void addBootstrapDecryptInitializer(SpringApplication application) {
DelegatingEnvironmentDecryptApplicationInitializer decrypter = null;
Set<ApplicationContextInitializer<?>> initializers = new LinkedHashSet<>();
for (ApplicationContextInitializer<?> ini : application.getInitializers()) {
if (ini instanceof EnvironmentDecryptApplicationInitializer) {
@SuppressWarnings("rawtypes")
ApplicationContextInitializer del = ini;
decrypter = new DelegatingEnvironmentDecryptApplicationInitializer(del);
initializers.add(ini);
initializers.add(decrypter);
}
else if (ini instanceof DelegatingEnvironmentDecryptApplicationInitializer) {
// do nothing
}
else {
initializers.add(ini);
}
}
ArrayList<ApplicationContextInitializer<?>> target = new ArrayList<ApplicationContextInitializer<?>>(
initializers);
application.setInitializers(target);
}
@SuppressWarnings("unchecked")
private void apply(ConfigurableApplicationContext context,
SpringApplication application, ConfigurableEnvironment environment) {
if (application.getAllSources().contains(BootstrapMarkerConfiguration.class)) {
return;
}
application.addPrimarySources(Arrays.asList(BootstrapMarkerConfiguration.class));
@SuppressWarnings("rawtypes")
Set target = new LinkedHashSet<>(application.getInitializers());
target.addAll(
getOrderedBeansOfType(context, ApplicationContextInitializer.class));
application.setInitializers(target);
addBootstrapDecryptInitializer(application);
}