Spring 源码梳理(一)之 ClassPathXmlApplicationContext
我们了解spring源码在平时的开发中能够更快速的去定位问题,并且能够去学习这些框架中的设计模式
环境搭建
1.在idea中创建一个maven工程
相信大家都很熟悉,所以本文中略过。
2.创建一个java类
3.创建SpringBean配置文件
4.pom文件
5.创建一个main函数入口
说明:项目目录如下:其中MyApp类是和App类类似可以不用管。
进入spring源码--debug调试
首先我们要从main入口开始,进入ClassPathXmlApplicationContext类,如图:
然后进入到如下如代码部分:
调用自己的构造函数,传入configLocation配置文件信息,此处configLocation=SpringBean.xml,一个refresh参数为true,还一个空的上下文对象,然后进入:
这是refresh参数用到了,进入if逻辑,调用一个refresh方法,在此之前setConfigLocations主要是加载Spring配置文件的位置。下面是refresh方法代码如下:
其中,核心方法this.obtainFreshBeanFactory(),进入到这个方法代码如下:
主要有两个方法this.refreshBeanFactory()和this.getBeanFactory(),其中refreshBeanFactory()代码如下:
总的来说ClassPathXmlApplicationContext 这种形式的Spring配置文件的加载主要是下面的过程:
A:加载配置文件名到系统配置
B:销毁已有的Beans和BeanFactory
C:创建新的BeanFactory
D:加载Beans,分析Bean中的节点,然后加载到BeanFactory,BeanFactory生效。
版权声明: 本文为 InfoQ 作者【彭阿三】的原创文章。
原文链接:【http://xie.infoq.cn/article/440bdb97a6c4d522fd10aa52b】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论