分析Spring容器启动流程 Spring初始化

每当启动Web容器时(例如Tomcat),会读取Web应用中的web.xml文件。以下这段代码就是启动Spring容器的关键代码。

ContextLoaderListener 类继承了ContextLoader,实现 了ServletContextListener接口。

public class ContextLoaderListener extends ContextLoader implements ServletContextListener {public ContextLoaderListener() {}public ContextLoaderListener(WebApplicationContext context) {super(context);}public void contextInitialized(ServletContextEvent event) {this.initWebApplicationContext(event.getServletContext());}public void contextDestroyed(ServletContextEvent event) {this.closeWebApplicationContext(event.getServletContext());ContextCleanupListener.cleanupAttributes(event.getServletContext());}
}

ContextLoader:ContextLoaderListener可以指定在Web应用程序启动时载入Ioc容器,正是通过ContextLoader来实现的,ContextLoader来完成实际创建的WebApplicationContext,也就是Ioc容器的初始化工作。
ServletContextListener:负责监听ServletContext域的创建和销毁,当域创建时会调用contextInitialized方法(继承自ContextLoader)。创建WebApplicationContext(web应用上下文对象)并放入ServletContext域中以便调用。

这就是Spring容器的启动流程了。

分析Spring容器启动流程 Spring初始化相关推荐

  1. Spring源码分析2 — 容器启动流程

    1 主要类 部署web应用时,web容器(比如Tomcat)会读取配置在web.xml中的监听器,从而启动spring容器.有了spring容器之后,我们才能使用spring的IOC AOP等特性.弄 ...

  2. Spring容器启动流程+Bean的生命周期【附源码】

    如果对SpringIoc与Aop的源码感兴趣,可以访问参考:https://javadoop.com/,十分详细. 文章目录 Spring容器的启动全流程 Spring容器关闭流程 Bean 的生命周 ...

  3. 阿里面试真题:Spring容器启动流程

    有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...

  4. 【spring容器启动】之bean的实例化和初始化(文末附:spring循环依赖原理)

    本次我们通过源码介绍ApplicationContext容器初始化流程,主要介绍容器内bean的实例化和初始化过程.ApplicationContext是Spring推出的先进Ioc容器,它继承了旧版 ...

  5. Spring Boot————Spring Boot启动流程分析

    一.引言 Spring Boot 的启动虽然仅仅是执行了一个main方法,但实际上,运行流程还是比较复杂的,其中包含几个非常重要的事件回调机制.在实际生产开发中,有时候也会利用这些启动流程中的回调机制 ...

  6. spring 容器启动执行重置定时任务

    需求: 对于quartz定时任务,需要自定义设置cron表达式实现修改定时任务的执行周期. 目前条件: 定时任务是在spring容器启动完毕通过@EventListener监听容器的ContextRe ...

  7. 【程序报错】Spring容器启动时报异常:Can not set field to com.sun.proxy.$Proxy

    问题 1 异常信息 在Web项目中Spring容器启动的时候,报错信息为Can not set field- to com.sun.proxy.$Proxy. 2 本质 因为JDK实现动态代理业务的时 ...

  8. Android 8.0学习(27)--- SystemUI(二)启动流程和初始化

    Android 8.0 SystemUI(二):启动流程和初始化 这篇的话,将对SystemUI的启动和大体的初始化作描述.篇幅应该比上篇多了些.哈哈. 老样子,先上目录,简洁明了. 概述 由于需要实 ...

  9. Launcher启动流程及初始化

    前言 前面我们学习了SystemServer的启动流程,也了解了AMS是如何启动起来并通过Binder注册到ServiceManger内的,OK,本文基于这俩篇基础继续来学习Launcher. Lau ...

最新文章

  1. 多多点金——青龙羊毛
  2. thinkphp 视图模型 两个字段映射同一个表
  3. /src/log4j.xml
  4. 【David Silver强化学习公开课】-3:DP
  5. ycsb 测试验证模式的mongodb
  6. 定义一个圆的类,输入半径,计算周长和面积并输出
  7. 2017蓝桥杯C++A:方格分割(DFS)
  8. 有时间依存效应或时间依存风险因素的生存分析
  9. qt实现百度首页(仅界面,功能未实现)
  10. 模拟生成微软序列号python_【python】13位随机序列号生成工具 源码分析
  11. 软媒时间---任务栏滚动工具
  12. vue3里面高德地图绘制3D图形
  13. 金蝶旗舰版固定资产计提折旧报错‘费用分配表所引用的*是非明细的核算项目’,如何解决?
  14. 安卓期末大作业——日记APP
  15. 洛谷----P1036 [NOIP2002 普及组] 选数
  16. python内建方法
  17. 用于桌面虚拟化和远程访问图形要求苛刻的 CAD、EDA 应用程序的高级解决方案
  18. 获取特定时间的时间戳,以及在使用时ios不生效问题
  19. C++算法设计与分析例题代码(基础篇)
  20. HBase安装以及基本操作

热门文章

  1. kotlin int最大值_Kotlin程序查找三个数字中的最大值
  2. cass展点不在原位置_cass展点之步骤及方法
  3. 88是python语言的整数类型_Python基础数据类型题
  4. matlab上机实验1,上机实验1:熟悉matlab基本操作
  5. 一周学好python_耗时一周整理的Python资料,包含各阶段所需网站、项目,收藏了?慢慢来...
  6. python画图显示不了中文_完美解决Python matplotlib绘图时汉字显示不正常的问题
  7. 使用uuid作为数据库主键,被技术总监怼了!
  8. 【Python】交互式界面创建函数
  9. Js实现动态插入删除文本框
  10. Windows巡检IIS指标脚本(PowerShell实现)