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.StandardContextaddServletContainerInitializer方法



回到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


下面是分别对SecurityWebInitializerSpingWebInitializer

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


0 0
原创粉丝点击