Spring源码分析【1】-Tomcat的初始化
来源:互联网 发布:手机网络代理 编辑:程序博客网 时间:2024/04/29 05:14
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的初始化
- spring源码分析-spring上下文的初始化
- Spring初始化过程源码分析(1)
- Tomcat源码分析-初始化流程
- Spring源码分析(二)-Spring IoC容器的初始化No.1
- tomcat源码分析 StandardServer初始化过程
- Spring Security3源码分析(1)-FilterChainProxy初始化
- spring源码分析-web容器初始化过程解析1
- Tomcat源码学习-1-初始化
- Spring Security3源码分析-FilterChainProxy初始化
- Spring Security3源码分析-FilterChainProxy初始化
- Spring Security3源码分析-FilterChainProxy初始化
- Spring Security3源码分析-FilterChainProxy初始化
- Spring源码分析(六)IOC初始化
- Spring 初始化过程详细分析[源码](一)
- Spring 初始化过程详细分析 [源码] (二)
- Spring IOC容器bean初始化源码分析
- Spring MVC初始化部分源码分析
- C++ 获取制字符串
- Android初级进阶之自定义时钟(一)
- Java基础:进制转换基础
- Git 配置文件git config介绍
- Python学习笔记3--Python环境搭建
- Spring源码分析【1】-Tomcat的初始化
- HDU1260Tickets(dp)
- DP PX SP的区别
- ECMAScript中关于如何获取this的定义
- POJ 3262 Protecting the Flowers
- idea快速构建spark 工程
- AomticInteger原理
- springMVC @RequestParam ajax传递数组
- 如何在C#中实现OPC数据访问