Spring源码分析【2】-Tomcat和Sping的连接点
来源:互联网 发布:我的网络女主播老婆 编辑:程序博客网 时间:2024/06/03 15:40
Tomcat是怎么调用上Spring的呢?需要找到这个连接点。
答案就在org.apache.catalina.startup.ContextConfig的processServletContainerInitializers方法
new WebappServiceLoader()
回到processServletContainerInitializers
进入org.apache.catalina.startup.WebappServiceLoader的load方法
loader.getResources(configFile);
注意只有在WEB-INF/lib/spring-web-4.2.6.RELEASE.jar里定义了javax.servlet.ServletContainerInitializer文件META-INF/services/javax.servlet.ServletContainerInitializer
所以就会只加载到该文件忽视其他的jar包
containerServicesFound集合
loadServices
返回不可变的集合services
注意:这里使用了 Collections.unmodifiableList(services);
不可变集合,顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。
返回WebappServiceLoader
返回org.apache.catalina.startup.ContextConfig的processServletContainerInitializers方法
对initializerClassMap.put(sci, new HashSet<Class<?>>());
HandlesTypes是Tomcat自定义的注解getAnnotation(HandlesTypes.class)
class SpringServletContainerInitializer implements ServletContainerInitializer
HandlesTypes
for (Class<?> type : types)
org.springframework.web.WebApplicationInitializer不是注解
interface WebApplicationInitializer
typeInitializerMap.put(type, scis); org.springframework.web.WebApplicationInitializer
回到org.apache.catalina.startup.ContextConfig的webConfig()方法
读取/WEB-INF/classes资源文件
- Spring源码分析【2】-Tomcat和Sping的连接点
- Spring源码分析【1】-Tomcat的初始化
- spring源码分析连接
- Sping进阶之Spring和Hibernate的整合
- Sping MVC与Struts2和Spring的区别分别是?
- Spring源码分析【6】-ThreadLocal的使用和源码分析
- Spring MVC源码分析—Tomcat分析
- Spring Aop源码学习--JoinPoint连接点
- spring定时任务的两种实现:1sping整合Quartz、 2sping-Task
- sping源码分析之properties操作
- Tomcat源码分析(二)--连接处理
- Tomcat源码分析(二)--连接处理
- Tomcat源码分析(二)--连接处理
- Tomcat源码分析(二)--连接处理
- tomcat源码分析连接coyote catalina
- Tomcat 之 Session的活化和钝化 源码分析
- Tomcat源码分析(五)--容器处理连接之servlet的映射
- Tomcat源码分析(五)--容器处理连接之servlet的映射
- iOS,SVN如何撤回到指定的一个版本(使用Cornerstone)
- 184 ssh连接实现域名alias
- SQL Server 2005/2008备份数据库时提示“无法打开备份设备”
- runtime
- C#控制台基础 圆周率 π的表示
- Spring源码分析【2】-Tomcat和Sping的连接点
- AWK seq
- Android5.0+(Percent 百分比布局)
- 006:Generating random integers in a specific range
- html5 表单元素上
- 妙龄
- 让你吊炸天的技能
- 基于android模拟器和脚本录制工具的自动化操作
- 时间助手设计方案