? ?? 平常我們分析spring源碼熏版,一般都是通過XmlBeanFactory爬早。來分析context的初始化咖驮。那么web項目中边器,又是怎么初始化context的呢?
? ? web項目中托修,我們通常都是如下圖忘巧,通過listen監(jiān)聽完成初始化。
具體怎么怎么完成的呢睦刃,打開ContextLoaderListener
web中的listener會通過鉤子執(zhí)行contextInitialized(ServletContextEvent event) ,繼續(xù)跟代碼到父類的initWebApplicationContext方法
注意紅圈的方法砚嘴。得到了context對象,跟進去看看怎么得到的涩拙。
很清楚可以看到际长,得到class,然后通過反射得到對象。注意紅圈得到class的方法兴泥,跟進去工育。
我們可以在web.xml里面指定contextClass,如果不指定,會去拿默認的搓彻,這個地方如绸,需要看ContectLoader的static代碼塊,是怎么加載contextClassName.
到了這里應該明白了旭贬,加載當前類同一目錄下的ContextLoader.properties怔接。
這就是最終初始化的context。