Spring IOC容器和Spring MVC IOC容器的區別


 web.xml

<context-param>
    <param-name>contextConfigLocation</param-name>
   <!-- 指定加載application配置文件 -->
    <param-value>classpath:spring/application.xml</param-value>
</context-param>

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

<!-- 配置SpringMVC -->
<servlet>
  <servlet-name>usermanage</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <!-- 指定加載外部的spring-mvc配置文件 -->
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/springmvc.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>

Servlet:代表的的容器為spring-mvc的子容器

DispatcherServlet上下文在初始化的時候會建立自己的IOC上下文,所以持有Spring mvc相關的bean。

DispatcherServlet 是前端控制器

DispatcherServlet專門為前端監聽請求的時候所用(負責協調和組織不同組件完成請求處理並返回響應工作)

當前端接收到請求時,DispatcherServlet 從容器中取出所有 HandlerMapping 實例遍歷,每個 HandlerMapping 會根據請求信息,通過自己實現類中的方式去找到處理該請求的 Handler (如Controller中的方法)

 

context-param:代表的容器是spring本身的容器,spring-mvc可以理解為一個繼承自該容器的子容器,spring容器是最頂層的父類容器,跟java的繼承原理一樣

 

SpringMVC 的 IOC 容器中的 bean 可以引用Spring IOC 容器中的 bean

反之 Spring IOC 容器中的bean則不能引用Spring MVC IOC容器中的 bean 因為:

 

Spring MVC IOC容器是Spring IOC容器的子類,子類可以引用父類,父類不能引用子類。

 

從軟件層面上來說,Spring MVC是展示層可以調用業務層,業務層不能調用展示層。

 

當服務器解析web.xml的時候由於listener監聽的原因,會優先初始化spring容器,之后才初始化spring-mvc容器。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM