平常我们分析spring源码,一般都是通过XmlBeanFactory。来分析context的初始化。那么web项目中,又是怎么初始化context的呢?
web项目中,我们通常都是如下图,通过listen监听完成初始化。
具体怎么怎么完成的呢,打开ContextLoaderListener
web中的listener会通过钩子执行contextInitialized(ServletContextEvent event) ,继续跟代码到父类的initWebApplicationContext方法
注意红圈的方法。得到了context对象,跟进去看看怎么得到的。
很清楚可以看到,得到class,然后通过反射得到对象。注意红圈得到class的方法,跟进去。
我们可以在web.xml里面指定contextClass,如果不指定,会去拿默认的,这个地方,需要看ContectLoader的static代码块,是怎么加载contextClassName.
到了这里应该明白了,加载当前类同一目录下的ContextLoader.properties。