简谈spring父子容器

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 Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,070评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,461评论 19 139
  • Spring容器高层视图 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相...
    Theriseof阅读 7,814评论 1 24
  • 我非常羡慕别人家婆慈孙孝、其乐融融的祥和景象。我老妈和我小儿子这两拨人,总是时不时发生点摩擦,比如俩人抢电视看,吵...
    袁一今阅读 4,010评论 1 2
  • 想说什么又不想说了,觉得也不是什么大事,可能是我自个的一些牢骚吧,你可能看不惯他,可我又是不好意识直接说出口的这种...
    小夭ing阅读 819评论 0 0