0.
1. org.springframework.web.context.contextloaderlistener類進行容器的初始化時,該類會被web容器(如tomcat)自動例項化,並呼叫contextinitialized方法。
public void contextinitialized(servletcontextevent event)}
} else
long starttime = system.currenttimemillis();
try
if(!err.isactive())
} }
classloader err1 = thread.currentthread().getcontextclassloader();
if(err1 == contextloader.class.getclassloader()) else if(err1 != null)
if(logger.isdebugenabled())
if(logger.isinfoenabled())
return this.context;
} catch (runtimeexception var8) catch (error var9)
}};servletcontext)方法,很顯然這個方法是用來建立web容器的;
class contextclass = this.determinecontextclass(sc);
} else }
4.determinecontextclass方法根據web.xml初始化引數來確定context的具體實現類
protected class<?> determinecontextclass(servletcontext servletcontext) catch (classnotfoundexception var4)} else catch (classnotfoundexception var5)
}}
static catch (ioexception var1)=currentcontextperthread = new concurrenthashmap(1);
}
string initparameter;
if(objectutils.identitytostring(wac).equals(wac.getid())) else if(sc.getmajorversion() == 2 && sc.getminorversion() < 5) else
}wac.setservletcontext(sc);
initparameter = sc.getinitparameter("contextconfiglocation");
if(initparameter != null)
this.customizecontext(sc, wac);
wac.refresh();}
在該方法中:
①根據context實現類的名稱設定上下文的名稱;
public static string identitytostring(object obj)
② this
.customizecontext(sc
,wac)主要用於自定義初始化
③ wac.refresh()載入xml配置,該方法用於設定**工廠類、生成beanfactory、例項化類、向web容器註冊beanfactory等等操作,其中根據web.xml檔案中
contextconfiglocation配置資訊例項化類是重中之重。
public void refresh() throws bean***ception, illegalstateexception catch (bean***ception var5)web.xml檔案中}}
contextconfiglocation的配置資訊
contextconfiglocation
Spring原始碼研究 容器初始化
新建乙個容器,看看後面幹了啥 xmlbeandefinitionreader.loadbeandefinitions resource line 302 我們用string指定了xml配置檔案的路徑,spring要將其封裝到resource方便io,這裡的resource指的就是我們的配置 之後經過...
spring原始碼 bean之增強初始化 3
四 可能有人會問,為什麼沒有defaultlistablebeanfactory的相關屬性了呢,這個在原始碼的講解部分會細說。五 原始碼解析 1 增強性的bean容器初始化實現方式 public static void main string args 2 實現過程 bean ception bea...
Tomcat原始碼之 初始化
1.首先設定catalina 的路徑和初始化classloader 2.利用反射模式啟動catalila catalila.load 的時候 初始化相應的容器 img catalila.start 啟動的時候,把相應的容器同事啟動 按從大到小依次啟動 先啟動server,在service,然後eng...