spring MVC初始化過程學習筆記1
如果有錯誤請指正~
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