鍍金池/ 問答/Java/ Spring父容器與Spring MVC子容器是如何體現出父子關系的

Spring父容器與Spring MVC子容器是如何體現出父子關系的

平常的子類繼承父類通過extends關鍵字來實現,那么Spring父容器與Spring MVC子容器是如何體現出父子關系的呢?
容器指的是一個類嗎?Spring容器是哪個類,Spring MVC容器又是哪個類?
回答
編輯回答
編輯回答
別硬撐

所謂容器,就是上下文,在這同一個上下文里,大家可以共享一些東西。

Spring應用啟動時,會先讀取web.xml文件,調用ContextLoaderListener創(chuàng)建Spring容器,也就是你說的父容器。

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

Listener創(chuàng)建完之后,開始創(chuàng)建Servlet:

    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>

這時候這個DispatcherServlet開始試圖創(chuàng)建SpringMVCApplicationContext,它先找剛才由上面那個ContextLoaderListener創(chuàng)建的SpringApplicationContext,找到后,把SpringApplicationContext作為參數傳給DispatcherServletApplicationContextsetParent方法,這樣SpringMVC的容器就變成了Spring容器的兒子。

因為在SpringMVC這個子容器創(chuàng)建的時候指定了它的Spring父容器,所以兒子能找到父親,所以SpringMVC這個子容器里的Bean可以調用父容器的服務,而父容器不知道有這個兒子的存在(一個不負責任的父親),父容器里的Bean不能調用子容器里的服務。

2017年5月28日 20:29