由原始碼理解spring初始化過程

2021-07-24 23:56:46 字數 2077 閱讀 2522

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...