最近调试springboot的启动过程.看各种事件.

 

ServletWebServerApplicationContext.onRefresh
-->createWebServer()
-->this.webServer = factory.getWebServer(getSelfInitializer());
-->getSelfInitializer()
-->selfInitialize

ServletWebServerApplicationContext.selfInitialize
-->ServletWebServerApplicationContext.getServletContextInitializerBeans
-->ServletContextInitializerBeans.ServletContextInitializerBeans()
-->ServletContextInitializerBeans.addServletContextInitializerBeans
-->ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializer)
-->beanFactory.getBeanNamesForType(type-->ServletContextInitializer) 
这个返回各种filter的名字.就是filter加载位置

//////////////////////////////////////////////////////////////////////
// 这一段, md, 谁能看懂.
boolean matchFound = 
    (allowEagerInit || !isFactoryBean || (dbd != null && !mbd.isLazyInit()) || containsSingleton(beanName)) &&
    (includeNonSingletons || (dbd != null ? mbd.isSingleton() : isSingleton(beanName))) && isTypeMatch(beanName, type);

if (!matchFound && isFactoryBean) {
    // In case of FactoryBean, try to match FactoryBean instance itself next.
    beanName = FACTORY_BEAN_PREFIX + beanName;
    matchFound = (includeNonSingletons || mbd.isSingleton()) && isTypeMatch(beanName, type);
}
if (matchFound) {
    result.add(beanName);
}

看不出有啥特征, servlet之类的.

spring boot 启动过程 springboot启动过程 servlet_spring