org.apache.catalina.startup.ContextConfig.configureStart()

org.apache.catalina.startup.ContextConfig.webConfig()

进入org.apache.catalina.startup.ContextConfig.processServletContainerInitializers

processServletContainerInitializers参考:Spring源码分析【1】-Tomcat和Sping的连接点

回到org.apache.catalina.startup.ContextConfig.webConfig()

加载/WEB-INF/classes下的资源

org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource

con目录下2个子目录

递归所有的目录

继续

找到第一个文件,非文件夹的

然后进入到

else if (webResource.isFile() &&
                webResource.getName().endsWith(".class"))

进入processAnnotationsStream

org.apache.tomcat.util.bcel.classfile.ClassParser.ClassParser()

org.apache.tomcat.util.bcel.classfile.ClassParser.Parser()

org.apache.tomcat.util.bcel.classfile.ClassParser.readID()

java.io.DataInputStream.readInt()

org.apache.tomcat.util.bcel.classfile.ClassParser.readClassInfo

回到processAnnotationsStream

org.apache.catalina.startup.ContextConfig.checkHandlesTypes

org.apache.catalina.startup.ContextConfig.populateJavaClassCache

populateJavaClassCache(javaClass.getSuperclassName());

父类java/lang/Object.class

回到checkHandlesTypes

回到processAnnotationsStream

回到processAnnotationsWebResource

继续循环遍历其他的class文件:com\alipay\sign\Base64.class

javaClassCache增加了com.alipay.sign.Base64

如此这般

下一步开始循环自己定义的包,例如这个XXbean.class

org.apache.catalina.startup.ContextConfig.webConfig()

从以上可以看出对于类的加载是按照编译文件的约定目录去寻找的

回到org.apache.catalina.startup.ContextConfig.webConfig()

中间一些过程加载XML配置文件暂时先过,到下面这一步:

org.apache.catalina.core.StandardContext的addServletContainerInitializer方法

回到org.apache.catalina.startup.ContextConfig.lifecycleEvent()

回到org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent

fireLifecycleEvent

org.apache.catalina.core.StandardContext.startInternal()

org.springframework.web.SpringServletContainerInitializer.onStartup

得到List<WebApplicationInitializer> initializers

下面是分别对SecurityWebInitializer和SpingWebInitializer

SpingWebInitializer的加载参考:Spring源码分析【3】-SpingWebInitializer的加载

Spring源码分析【1】-Tomcat的初始化相关推荐

  1. 【spring源码分析】IOC容器初始化(二)

    前言:在[spring源码分析]IOC容器初始化(一)文末中已经提出loadBeanDefinitions(DefaultListableBeanFactory)的重要性,本文将以此为切入点继续分析. ...

  2. tomcat源码分析_Tomcat源码分析(一)--Tomcat的初始化

    Tomcat的初始化--init Bootstrap入口 //整个Tomcat的入口,在这之前会先调用静态代码块 public static void main(String args[]) {syn ...

  3. 【spring源码分析】IOC容器初始化(六)

    前言:经过前几篇文章的讲解,我们已经得到了BeanDefinition,接下来将分析Bean的加载. 获取Bean的入口:AbstractApplicationContext#getBean 1 pu ...

  4. spring源码分析之spring-core总结篇

    1.spring-core概览 spring-core是spring框架的基石,它为spring框架提供了基础的支持. spring-core从源码上看,分为6个package,分别是asm,cgli ...

  5. spring源码分析第六天------spring经典面试问题

    spring源码分析第六天------spring经典面试问题 1.Spring5 新特性及应用举例 2.Spring 经典的面试问题 a.什么是 Spring 框架?Spring 框架有哪些主要模块 ...

  6. Spring 源码分析(三) —— AOP(五)创建代理

    2019独角兽企业重金招聘Python工程师标准>>> 创建代理 代理的定义其实非常简单,就是改变原来目标对象方法调用的运行轨迹.这种改变,首先会对这些方法进行拦截,从而为这些方法提 ...

  7. 手撸spring源码分析IOC实现原理

    手撸spring源码分析IOC实现原理 文章出处:https://github.com/fuzhengwei/small-spring 根据小付哥的手撸spring核心源码一步步学习出来的结果收货总结 ...

  8. spring源码分析之BeanDefinition相关

    目录 前言: BeanDefinition的家族系列 1.BeanDefintion的UML类图 2.BeanDefintion家族类详解 2.1.通用接口 2.2.BeanDefintion接口 2 ...

  9. Spring源码分析八:Mybatis ORM映射框架原理

    文章目录 (一)Mybatis单独操作数据库程序 1.1.数据库表 1.2.建立PO 1.3.建立mapper接口映射 1.4.建立Mybatis配置文件 1.5.建立mapper映射文件 1.6.测 ...

最新文章

  1. Android PathDashPathEffect 使用详解
  2. [转] 中文字体网页开发指南
  3. CSDN博客的安全性为什么一直如此薄弱?
  4. 无性别服饰是趋势,但不该只停留在“中性”
  5. 信息系统项目管理师-信息化与信息系统考点笔记(下)
  6. boost 变量类型转换
  7. dll文件 修改特征码_Could not load dynamic library cublas64_10.dll
  8. c语言右上左下遍历数组,如何将一个数组的元素循环左移?
  9. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_11-修改页面-前端-Api调用...
  10. A、B、C类地址及子网掩码学习笔记
  11. 【工具推荐】下载github部分文件
  12. 量化涌现:信息论方法识别多变量数据中的因果涌现
  13. 电脑连上了WIFI,但是却没有网(前提WIFI没有问题)
  14. 华为android7.0 root,华为Nova 7.0 root教程 华为Nova获取7.0系统的root权限
  15. 微信小程序语音识别java_微信小程序实现语音识别功能
  16. Docker基础、利用Docker Compose部署Vue项目
  17. EXCEL 快速统计一列中相同数值出现的个数
  18. 关于linux的音频驱动
  19. 【问题解决】关于 C++ 连接 Redis 集群报错 MOVED
  20. 华硕笔记本更换操作系统的一波三折的遭遇

热门文章

  1. cstring只获取到第一个数_一文讲透 Dubbo 负载均衡之最小活跃数算法
  2. 如何在OpenCV中为InRange阈值选择颜色的最佳HSV值
  3. Linux那些事儿 之 戏说USB(28)设备的生命线(十一)
  4. 深度学习--TensorFlow(8)CNN卷积神经网络理论(计算机视觉)
  5. html脚本语言居中,web前端:CSS--几种常用的水平垂直居中对齐方法
  6. java保存多张图片格式_从多个URL下载多个图像文件并保存到本地计算机(使用R)...
  7. mysql替换开头_如何在MySQL的字符串开头搜索和替换特定字符?
  8. 从2D到3D的目标检测综述
  9. PCL点云配准(1)
  10. 基于C++的图像散度计算