动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

Spring MVC父子容器入门知识

08-20 17:41 95浏览
举报 T字号
  • 大字
  • 中字
  • 小字

Spring整体框架的核心概念中,容器是核心思想,就是用来管理Bean的整个生命周期的,而在一个项目中,容器不一定只有一个,Spring中可以包括多个容器,而且容器有上下层关系,目前最常见的一种场景就是在一个项目中引入Spring和Spring MVC这两个框架,那么它其实就是两个容器,Spring是父容器,Spring MVC子容器。本文就Spring MVC父子容器入门知识展开学习。

Spring父容器中注册的Bean对于Spring MVC容器中是可见的,而在Spring MVC容器中注册的Bean对于Spring父容器中是不可见的,也就是子容器可以看见父容器中的注册的Bean,反之就不行。我们可以使用统一的如下注解配置来对Bean进行批量注册,而不需要再给每个Bean单独使用xml的方式进行配置。

其实父子容器的主要作用是划分框架边界。在J2EE三层架构中,在service层我们一般使用spring框架,而在web层则有多种选择,如spring mvc、struts等。因此,通常对于web层我们会使用单独的配置文件。例如在上面的案例中,一开始我们使用spring-servlet.xml来配置web层,使用applicationContext.xml来配置service、dao层。如果现在我们想把web层从spring mvc替换成struts,那么只需要将spring-servlet.xml替换成Struts的配置文件struts.xml即可,而applicationContext.xml不需要改变。

事实上,如果你的项目确定了只使用spring和spring mvc的话,你甚至可以将service 、dao、web层的bean都放到spring-servlet.xml中进行配置,并不是一定要将service、dao层的配置单独放到applicationContext.xml中,然后使用ContextLoaderListener来加载。在这种情况下,就没有了Root WebApplicationContext,只有Servlet WebApplicationContext。

我们先找程序入口,查看web.xml配置文件,找到Spring MVC相关配置。

 

        spring-mvc    org.springframework.web.servlet.DispatcherServlet

        

            contextConfigLocation

classpath:spring-mvc.xml

        

        1

 

配置很简单,只是配置了一个类型为DispatcherServlet类型的Servlet,并设置了初始化参数。那么问题随着而来,DispatcherServlet又是什么呢?

我们先来看看DispatcherServlet的工作流程:

(1) 所有请求先发到DispacherServlet

(2) DispacherServlet根据请求地址去查询相应的Controller,然后返回给DispacherServlet。

(3) DispacherServlet得到Controller后,让Controler处理相应的业务逻辑。

(4) Controler处理处理完后将结果返回给DispacherServlet。

(5) DispacherServlet把得到的结果用视图解析器解析后获得对应的页面。

(6) DispacherServlet跳转到解析后的页面。

在整个过程中DispatcherServlet承当了一个中心控制器的角色来处理各种请求。

从上图中可以看到DispatcherServlet里面有一个 Servlet WebApplicationContext,继承自 Root WebApplicationContext。而WebApplicationContext其实就是一个IOC容器,root WebApplicationContext是Spring容器。这说明DispatcherServlet中里创建了一个IOC容器并且这个容器继承了Spring 容器,也就是Spring的子容器。

综合上面的知识,我们可以得出一些结论:

1.应用中可以包含多个IOC容器。

2.DispatcherServlet的创建的子容器主要包含Controller、view resolvers等和web相关的一些bean。

3.父容器root WebApplicationContex主要包含包含一些基础的bean,比如一些需要在多个servlet共享的dao、service等bean。

4.如果在子容器中找不到bean的时候可以去父容器查找bean。

本文只是对Spring MVC父子容器入门知识进行了一些阐述,想更深入了解和学习Spring MVC父子容器方面的知识的小伙伴可以观看本站的Spring MVC视频教程中父子容器相关的课程,结合里面的实例加速理解父子容器的关系。

0人推荐
共同学习,写下你的评论
0条评论
携代码的男孩纸
程序员携代码的男孩纸

24篇文章贡献108038字

作者相关文章更多>

推荐相关文章更多>

DOM渲染的详细过程

QCode09-04 14:38

CSS水平和垂直居中技巧大梳理

Code大师09-04 14:50

mui的input框在IOS系统下无法聚焦或点击多次才能聚焦

不写代码你养我啊08-23 11:14

推荐的-视.频播放器以及在线客服

不写代码你养我啊09-17 18:02

谈谈java多线程的三大特性

要学习了06-18 18:13

发评论

举报

0/150

取消