美文网首页
简谈spring父子容器

简谈spring父子容器

作者: Aolus | 来源:发表于2017-05-24 13:39 被阅读0次

    spring的核心就是容器,何为容器,简单的说就是管理Java对象的一个大罐子,任何java对象都可以让spring去管理,省的我们操心,我们在用的时候只需要从spring容器中取出来即可,很方便,这也是为什么spring可以成为web开发的主流框架。下面我谈谈spring的父子容器
     什么叫父子容器?简单点说spring的父子容器有点类似于java的继承,spring的规则是 子容器的bean可以访问到父容器的bean但是父容器的bean是没有权限访问子容器的bean 这是spring不成文的规定下面我以web开发为例讲解上下文:

    父上下文:

    使用listener监听器来加载配置文件,如下:

    Spring 会创建一个WebApplicationContext上下文,称为父上下文(父容器),保存在 ServletContext中,key是WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE的值。

    可以使用Spring提供的工具类取出上下文对象:WebApplicationContextUtils.getWebApplicationContext(ServletContext);

    子上下文:

    使用Spring MVC 来处理拦截相关的请求时,会配置DispatchServlet

    每个DispatchServlet会有一个自己的上下文,称为子上下文,它也保存在 ServletContext中,key 是"org.springframework.web.servlet.FrameworkServlet.CONTEXT"+Servlet名称。当一 个Request对象产生时,会把这个子上下文对象(WebApplicationContext)保存在Request对象中,key是 DispatcherServlet.class.getName() + ".CONTEXT"。

    可以使用工具类取出上下文对象:RequestContextUtils.getWebApplicationContext(request);

    父上下文(父容器)和子上下文(子容器)的访问权限:

    子上下文可以访问父上下文中的bean,但是父上下文不可以访问子上下文中的bean

    相关文章

      网友评论

          本文标题:简谈spring父子容器

          本文链接:https://www.haomeiwen.com/subject/wownxxtx.html