首页 > 移动平台 > 详细

Spring加载流程源码分析____ClassPathXmlApplicationContext源码跟踪(一)__super(parent)

时间:2019-07-04 17:02:30      阅读:112      评论:0      收藏:0      [点我收藏+]
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationcontext.xml");

从ClassPathXmlApplicationContext进入跟踪:
技术分享图片
技术分享图片

这里我们记住this里的参数:
configLocation:applicationContext.xml
parent:null
refresh:true

super(parent)// 1.初始化父类
setConfigLocations(configLocations);// 2.设置本地的配置信息
// 3.完成Spring容器的初始化
if (refresh) {
refresh();
}
技术分享图片

这篇我们主讲super(parent)!
super(parent)其实就是调用的AbstractXmlApplicationContext的构造方法
技术分享图片
技术分享图片
技术分享图片
技术分享图片

查看this()方法:
技术分享图片

在该构造方法对resourcePatternResolver 变量赋值。resourcePatternResolver 的作用是根据路径得到类的Resource对象;
查看getResourcePatternResolver方法:
技术分享图片

创建PathMatchingResourcePatternResolver对象的时候,AbstractApplicationContext将自身作为ResourceLoader传递给了PathMatchingResourcePatternResolver;
技术分享图片

返回到AbstractApplicationContext的构造方法中:
技术分享图片

跟踪setParent(parent);我们上面有讲参数parent为null
技术分享图片
技术分享图片

因为parent为null所以if语句中的代码不会执行,所以此if中的代码在此逻辑中不会执行,所以在此就没有分析的必要了。
初始化的第一部分就分析完毕了,这部分的主要工作是为后续Resource处理准备好处理类。

以上内容都是我借鉴大佬博客而来的,跟着大佬的博客然后我自己去反复跟踪代码去理解,以及学会能说得出来,
波波老师的博客干货满满,值得关注!
https://dpb-bobokaoya-sm.blog.csdn.net/article/details/87870315

Spring加载流程源码分析____ClassPathXmlApplicationContext源码跟踪(一)__super(parent)

原文:https://www.cnblogs.com/zhangsonglin/p/11133232.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!