SpringMVC容器和Spring容器
Tomcat&Jetty在启动时给每个Web应用创建一个全局的上下文环境,这个上下文就是ServletContext,其为后面的Spring容器提供宿主环境。
Tomcat&Jetty在启动过程中触发容器初始化事件,Spring的ContextLoaderListener会监听到这个事件,它的contextInitialized方法会被调用,在这个方法中,Spring会初始化全局的Spring根容器,这个就是Spring的IoC容器,IoC容器初始化完毕后,Spring将其存储到ServletContext中,便于以后来获取。
Tomcat&Jetty在启动过程中还会扫描Servlet,一个Web应用中的Servlet可以有多个,以SpringMVC中的DispatcherServlet为例,这个Servlet实际上是一个标准的前端控制器,用以转发、匹配、处理每个Servlet请求。
Servlet一般会延迟加载,当第一个请求达到时,Tomcat&Jetty发现DispatcherServlet还没有被实例化,就调用DispatcherServlet的init方法,DispatcherServlet在初始化的时候会建立自己的容器,叫做SpringMVC 容器,用来持有Spring MVC相关的Bean。同时,Spring MVC还会通过ServletContext拿到Spring根容器,并将Spring根容器设为SpringMVC容器的父容器,请注意,Spring MVC容器可以访问父容器中的Bean,但是父容器不能访问子容器的Bean, 也就是说Spring根容器不能访问SpringMVC容器里的Bean。说的通俗点就是,在Controller里可以访问Service对象,但是在Service里不可以访问Controller对象。
SpringMVC容器和Spring容器相关推荐
- servlet容器,web容器,spring容器,springmvc容器的区别
这个理解我可以通过一个http的页面请求来说明. web容器中有servlet容器,spring项目部署后存在spring容器.其中spring控制service层和dao层的bean对象以及cont ...
- 【spring】在servlet中注入spring的bean,servlet容器和spring容器
一.Servlet容器 Servlet的整个生命周期好象都是由Servlet容器来处理的. 如果把它硬放到Spring容器中去创建,Servlet对象是可被Spring容器建出来,但Servlet容器 ...
- java spring 容器_java – Spring容器实现
我继续学习Spring,很难弄清楚ApplicationContext的实现方式.我是独立的J2EE应用程序,我对Web *或Portlet *实现不感兴趣. 您能否向我提供可能性的简要列表(如果不清 ...
- Spring容器 SpringMVC容器 web容器的关系
说到spring和springmvc,其实有很多工作好多年的人也分不清他们有什么区别,如果你问他项目里用的什么MVC技术,他会说我们用的spring和mybatis,或者spring和hibernat ...
- spring容器和SpringMVC容器的区别
说起spring容器和SpringMVC容器,很多刚接触spring框架的同志都有点懵,甚至是一头雾水,分不清楚两者的关系和区别,包括本人也是,因此还在网上找个不少资料.这俩容器呢虽然有必然的联系,但 ...
- Spring Boot教程(7) – 直观地理解Spring容器
在你学习Spring之前,你肯定听说过"控制反转"."依赖注入"."上下文"等名词,伴随着这些名词的,是一些冗长晦涩的解释,这些解释并没有什 ...
- 请简述什么是spring的ioc和di_小编Spring是什么、spring容器、IOC和DI
1.Spring (1)Spring是什么? 是一个轻量级的.用来简化企业级应用开发的开发框架. 注: a.简化开发: Spring对常用的api做了简化,比如,使用Spring jdbc来访问数据库 ...
- Spring 容器简介
1.美图 2.Spring 容器简介 Spring容器,我们常用的就是ApplicationContext,容器本身是存放Bean和Bean之间的依赖关系的,那么容器的生命周期是什么概念呢? 我们可以 ...
- Spring容器和Spring应用上下文的理解
1. 什么是Spring容器?作用是什么? 1.1 什么是Spring容器? Spring容器称为IOC容器,即:控制反转 应用程序里不用再过问对象的创建和管理对象之间的依赖关系了,都让IOC容器给代 ...
最新文章
- mysql从另一张获取数据的方法
- 如何评价马云和马斯克在世界人工智能大会的对话?
- Cascade R-CNN的一些记录
- log4j配置文件_Mybatis对log4j的支持及常用标签-Mybatis(6)
- adb linux 权限更改,使用命令chmod修改android文件权限
- git rebase 命令 常用_git命令之 git rebase 常用
- C#中Monitor和Lock的用法区别
- NotificationManager: notifyAsUser: tag=null, id=6, user=UserHandle{0}
- Angular之ngx-permissions安装入门
- 一文搞定Python正则表达式
- hadoop入门学习教程--DKHadoop完整安装步骤
- 体操冠军江钰源:妈妈你不要去讨饭了
- 安装ansible自动运维工具
- 容器技术Docker K8s 51 容器镜像服务(ACR)详解-进阶
- udev ksm
- 连接linux服务器工具
- html页面怎么加入qq群,qq群申请
- 常用邮箱的SMTP、POP3域名及其端口号
- python借助OpenCC实现中文繁体转简体
- HZNUOJ 2977 宝可梦决战 种族并查集
热门文章
- 再见丑陋的 Swagger,这个API神器界面更炫酷,逼格更高,体验更好!
- RabbitMQ负载均衡(2)——HAProxy
- Github霸榜月余,原来是阿里技术官的千亿级并发系统设计手册上线了
- IO 密集型服务 性能优化实战记录
- AV1挑起的Codec之战
- IBM Cloud Video工程师Scott Grizzle谈流媒体协议和Codec
- 董海冰:2018风云再起 ,期待AV1、AI和AR
- iphone如何使用CoreNFC
- 大剑无锋之数据库的范式【面试推荐】
- leetcode 123. Best Time to Buy and Sell Stock III | 123. 买卖股票的最佳时机 III(总结DP 模型套路)