1 主要类

部署web应用时,web容器(比如Tomcat)会读取配置在web.xml中的监听器,从而启动spring容器。有了spring容器之后,我们才能使用spring的IOC AOP等特性。弄清spring容器启动流程,有利于理解spring IOC中的各种特性,比如BeanPostProcessor,MessageSource,ApplicationListener等。我们先来看下容器启动流程中涉及的主要类。

ContextLoaderListener:注册在web.xml中,web应用启动时,会创建它,并回调它的initWebApplicationContext()方法,从而创建并启动spring容器。必须继承ServletContextListener。

WebApplicationContext:用于web应用的spring容器上下文,它代表了spring容器,继承自ApplicationContext。是一个接口,在ContextLoader.properties配置文件中可以声明它的实现类。默认实现类为XmlWebApplicationContext。ApplicationContext继承自BeanFactory,并扩展了它的很多功能。

ServletContext:web容器(如tomcat)的上下文,不要和ApplicationContext搞混了。

2 流程

2.1 web容器启动过程

web容器为spring提供了宿主环境ServletContext,启动时读取web.xml,如下

Spring源码分析2 — 容器启动流程相关推荐

  1. 源码分析Dubbo服务提供者启动流程-上篇

    本节将详细分析Dubbo服务提供者的启动流程,请带着如下几个疑问进行本节的阅读,因为这几个问题将是接下来几篇文章分析的重点内容.  1.什么时候建立与注册中心的连接.  2.服务提供者什么时候向注册中 ...

  2. [Abp vNext 源码分析] - 1. 框架启动流程分析

    一.简要说明 本篇文章主要剖析与讲解 Abp vNext 在 Web API 项目下的启动流程,让大家了解整个 Abp vNext 框架是如何运作的.总的来说 ,Abp vNext 比起 ABP 框架 ...

  3. 源码分析Dubbo服务提供者启动流程-下篇

    本文继续上文Dubbo服务提供者启动流程,在上篇文章中详细梳理了从dubbo spring文件开始,Dubbo是如何加载配置文件,服务提供者dubbo:service标签服务暴露全流程,本节重点关注R ...

  4. Spring源码分析——IOC容器

    1.IOC容器的概念 理解IOC容器的概念之前首先需要了解依赖翻转(又称依赖倒置)的概念 许多复杂的应用都是通过多个类之间的彼此合作实现业务逻辑的,这使得每个对象都需要管理自己与其合作对象的依赖,而如 ...

  5. leveldb源码分析:Open启动流程

    leveldb概述 Leveldb 是一个持久化的KV存储系统,主要将大部分数据存储在磁盘上,在存储数据的过程中,根据记录的key值有序存储,当然使用者也可以自定义Key大小比较函数,一个leveld ...

  6. 【neutron源码分析】neutron-server启动流程分析

    Neutron为Openstack的网络组件,其内部功能均是以plugin形式实现的,其中代表性的plugin就是ml2和l3,下面将从neutron启动的源码来分析neutron加载和扩展插件的流程 ...

  7. 源码分析-Activity的启动流程

    以android 6.0源码为参考,其他版本api会稍有不同 在Activity中,启动一个Activity的方法 @Override public void startActivity(Intent ...

  8. kettle源码分析之1启动流程(IDEA启动carte调试)

    文章目录 启动 Spoon Carte Pan kitchen 启动 对于kettle来说,整个程序的入口是launcher.jar 调用反射,实现其他命令功能: public static void ...

  9. Spring源码分析之Bean的创建过程详解

    前文传送门: Spring源码分析之预启动流程 Spring源码分析之BeanFactory体系结构 Spring源码分析之BeanFactoryPostProcessor调用过程详解 本文内容: 在 ...

最新文章

  1. RStudio版本号管理 整合Git
  2. python语言实现飞机大战
  3. pandas 在jupyter notebook时候能用,但在vscode, pycharm不能用
  4. 安装ISO系统(原版系统)系统终极方法
  5. JAVA入门级教学之(方法-4)
  6. 5款WordPress推荐文章幻灯片插件
  7. 变身吧,无人机:多种姿势可以选择,你喜欢X还是O?
  8. Redis教程:数据对象分析(一)
  9. I00033 消除游戏
  10. [OpenGL] 斯坦福兔子与显示列表
  11. 数据库悲观锁和乐观锁
  12. arcgis python 百度网盘 视频_arcgis软件零基础入门视频教程27讲百度网盘链接
  13. 信息化分析:集团企业信息化规划和实施研究
  14. 将自己的数据制作成VOC2007数据集
  15. TestStand-从LabVIEW创建TestStand数据类型的簇
  16. 嵌入式存储设备学习笔记
  17. 新兴网站神秘虎嗅,获得数百万元投资
  18. mysql候选关键字_MySQL——(SQL语句)
  19. SAP FI 系列 (035) - 应收票据的接收和承兑方法二
  20. C++ Primer Plus(第六版)--学习杂记(第六章)

热门文章

  1. 公众号商城系统让电商更简单!
  2. 产品经理面试必问5题
  3. Linux使用nmtui命令配置网卡(图形界面)
  4. 关于css3的50道常见面试题
  5. 2022质量员-土建方向-通用基础(质量员)题库及在线模拟考试
  6. 计算机配置时间怎么查,电脑怎么查看系统安装日期 查询电脑系统安装日期及系统运行时间的方法...
  7. MBA面试系列之----MBA英语面试
  8. 干货 :深入浅出神经网络的改进方法!
  9. 混沌数学之Kent模型
  10. 海外网红营销:最受欢迎的8种合作模式