1. 程式人生 > >spring MVC初始化過程學習筆記1

spring MVC初始化過程學習筆記1

load cati 過程 mage 筆記 ngx 名稱 spring -s

如果有錯誤請指正~

1.springmvc容器和spring的關系?

1.1 spring是個容器,主要是管理bean,不需要servlet容器就可以啟動,而springMVC實現了servlet規範,需要servlet容器才能運行起來.比如tomcat,jetty等;

1.2 springMVC核心是實現類是DispatcherServlet,繼承了FrameworkServlet,實現了HttpServletBean,ApplicationContextAware接口,實現了ApplicationContextAware接口 就基本上具備了獲取spring容器的屬性.可以得到spring容器管理的bean;

1.3 springMVC 本質也是個BeanFactory,是在spring的基礎上進行servlet的封裝,換句話說,它本身也是個spring ,只不過是為了Servle,而不只是為了bean,本質是個WebApplicationContext.

2.ContextLoaderListener 和springMVC的關系?

參考ContextLoaderListener啟動流程 https://blog.csdn.net/MrZhangXL/article/details/78587426

區別: http://www.guoweiwei.com/2014/07/contextloaderlistener-and-spring-mvc-dispatcherservlet.html

個人理解是:ContextLoaderListener 也是實現了servlet規範,初始化啟動的是根上下文,每個springMVC啟動的是自己的上下文,根上下文裏面的bean共享給所有的SpringMVC,作為他們的parent屬性,結合在項目中的應用,根據不同的url路徑,做不同的攔截,比如有的需要登錄,有的不需要登錄,可以配制不同的springMVC容器,做不同的處理.配置了ContextLoaderListener的話,只需要加載一次bean,就可以被所有的springMVC容器公用.

3.需要擴展的地方..

斷點的時候發現了ApplicationcContextFacade類,是管理springMVC名稱的地方,這個是tomcat裏面的代碼...層層嵌套,看來也要知道tomcat啟動和執行流程了...

最後,附上一張DispatcherServlet大致初始化過程

技術分享圖片

spring MVC初始化過程學習筆記1