springboot源码之

prepareContext(context, environment, listeners, applicationArguments,
                    printedBanner);
applyInitializers(context);
protected void applyInitializers(ConfigurableApplicationContext context) {
        for (ApplicationContextInitializer initializer : getInitializers()) {
            Class<?> requiredType = GenericTypeResolver.resolveTypeArgument(
                    initializer.getClass(), ApplicationContextInitializer.class);
            Assert.isInstanceOf(requiredType, context, "Unable to call initializer.");
            initializer.initialize(context);
        }
    }
//springApplication的初始化中有这个方法,逻辑是去spring.factories中取ApplicationContextInitializer.class
setInitializers((Collection) getSpringFactoriesInstances( ApplicationContextInitializer.
class));
org.springframework.context.ApplicationContextInitializer=\
org.springframework.boot.context.ConfigurationWarningsApplicationContextInitializer,\
org.springframework.boot.context.ContextIdApplicationContextInitializer,\
org.springframework.boot.context.config.DelegatingApplicationContextInitializer,\
org.springframework.boot.context.embedded.ServerPortInfoApplicationContextInitializer

猜你喜欢

转载自www.cnblogs.com/chuliang/p/9286352.html