javascript
SpringMVC容器和Spring容器
Tomcat&Jetty在啟動時給每個Web應用創建一個全局的上下文環境,這個上下文就是ServletContext,其為后面的Spring容器提供宿主環境。
Tomcat&Jetty在啟動過程中觸發容器初始化事件,Spring的ContextLoaderListener會監聽到這個事件,它的contextInitialized方法會被調用,在這個方法中,Spring會初始化全局的Spring根容器,這個就是Spring的IoC容器,IoC容器初始化完畢后,Spring將其存儲到ServletContext中,便于以后來獲取。
Tomcat&Jetty在啟動過程中還會掃描Servlet,一個Web應用中的Servlet可以有多個,以SpringMVC中的DispatcherServlet為例,這個Servlet實際上是一個標準的前端控制器,用以轉發、匹配、處理每個Servlet請求。
Servlet一般會延遲加載,當第一個請求達到時,Tomcat&Jetty發現DispatcherServlet還沒有被實例化,就調用DispatcherServlet的init方法,DispatcherServlet在初始化的時候會建立自己的容器,叫做SpringMVC 容器,用來持有Spring MVC相關的Bean。同時,Spring MVC還會通過ServletContext拿到Spring根容器,并將Spring根容器設為SpringMVC容器的父容器,請注意,Spring MVC容器可以訪問父容器中的Bean,但是父容器不能訪問子容器的Bean, 也就是說Spring根容器不能訪問SpringMVC容器里的Bean。說的通俗點就是,在Controller里可以訪問Service對象,但是在Service里不可以訪問Controller對象。
總結
以上是生活随笔為你收集整理的SpringMVC容器和Spring容器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTTP协议长短连接以及无状态
- 下一篇: 谈谈你的GC调优思路?