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

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方法:
[外链图片转存失败(img-cdJ9dEnd-1563022225669)(https://img2018.cnblogs.com/blog/1611808/201907/1611808-20190704162816368-1150809193.png)]

创建PathMatchingResourcePatternResolver对象的时候,AbstractApplicationContext将自身作为ResourceLoader传递给了PathMatchingResourcePatternResolver;

返回到AbstractApplicationContext的构造方法中:

跟踪setParent(parent);我们上面有讲参数parent为null

[外链图片转存失败(img-Hmk9mLvP-1563022225677)(https://img2018.cnblogs.com/blog/1611808/201907/1611808-20190704162846786-1694801988.png)]

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偷偷学习被我发现

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值