想必Servlet的關(guān)系就不必多說了,直接上代碼吧HttpServletBean繼承了HttpServlet,init方法如下@Overridepublicfinalvoidinit()throwsServletException{//Letsubclassesdowhateverinitializationtheylike.initServletBean();}看看子類FrameworkServlet#initServletBean方法@OverrideprotectedfinalvoidinitServletBean()throwsServletException{this.webApplicationContext=initWebApplicationContext();initFrameworkServlet();}看看initWebApplicationContextprotectedWebApplicationContextinitWebApplicationContext(){WebApplicationContextrootContext=WebApplicationContextUtils.getWebApplicationContext(getServletContext());WebApplicationContextwac=null;if(this.webApplicationContext!=null){wac=this.webApplicationContext;if(wacinstanceofConfigurableWebApplicationContext){ConfigurableWebApplicationContextcwac=(ConfigurableWebApplicationContext)wac;if(!cwac.isActive()){//Thecontexthasnotyetbeenrefreshed->provideservicessuchas//settingtheparentcontext,settingtheapplicationcontextid,etcif(cwac.getParent()==null){//Thecontextinstancewasinjectedwithoutanexplicitparent->set//therootapplicationcontext(ifany;maybenull)astheparent,看到?jīng)]有,如果有就設(shè)置rootApplicationContext,cwac.setParent(rootContext);}configureAndRefreshWebApplicationContext(cwac);}}}if(wac==null){//Nocontextinstancewasinjectedatconstructiontime->seeifone//hasbeenregisteredintheservletcontext.Ifoneexists,itisassumed//thattheparentcontext(ifany)hasalreadybeensetandthatthe//userhasperformedanyinitializationsuchassettingthecontextidwac=findWebApplicationContext();}if(wac==null){//Nocontextinstanceisdefinedforthisservlet->createalocalonewac=createWebApplicationContext(rootContext);}if(!this.refreshEventReceived){//EitherthecontextisnotaConfigurableApplicationContextwithrefresh//supportorthecontextinjectedatconstructiontimehadalreadybeen//refreshed->triggerinitialonRefreshmanuallyhere.看到這里就不多說了,初始化beanFactoryonRefresh(wac);}if(this.publishContext){StringattrName=getServletContextAttributeName();getServletContext().setAttribute(attrName,wac);}returnwac;}結(jié)束,就是辣么簡單