spring 源码分析(1)-xml文件解析

我们在最开始接触spring的时候,看到不少书spring入门的例子如下

ApplicationContext atx = new ClassPathXmlApplicationContext("application.xml");
atx.getBean("benefitService");

上面这个例子第一行是表示如何初始化一个spring 容器,第二表示如何从一个已经初始化后的spring容器中按bean id得到这个bean, 绝大部分spring应用中,bean都是按业务模板和层次分别配置在不同的xml文件中, spring容器根据配置的xml文件名路径去分别解析这些xml 配置文件,生成相应的BeanDefinition 实例,一个bean对应一个BeanDefinition, 解析完成bean 的xml配置文件之后,spring容器就开始初始bean,大概的过程如下:
《spring 源码分析(1)-xml文件解析》
这篇文章主要分析第一个阶段,即xml配置文件 —->BeanDefinition这个过程,首先根据IDE工具看一下ClassPathXmlApplicationContext 这个类的继承关系:
《spring 源码分析(1)-xml文件解析》
通过这个继续关系,发现ClassPathXmlApplicationContext也是间接实现了ResourceLoader这个接口, ResourceLoader的实现类主要用于根据给定的资源文件地址返回对应的Resource,在本例中,这个资源文件就是application.xml;
接着往下看

public ClassPathXmlApplicationContext(String configLocation) throws BeansException {
    this(new String[] {configLocation}, true, null);
}
public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, 
                     ApplicationContext parent)  throws BeansException {
    super(parent);
    setConfigLocations(configLocations);
    if (refresh) {
        refresh();
    }
}

代码到了含有三个参数的构造方法,主要有三个步骤

super(parent)

这个步骤主要是调父类的构造器初始化容器的parent对象,这示例中,parent这个参数为空,其次是初始化资源模式解析器resourcePatternResolver,是一个实现了ResourceLoader的类,源码如下 :

原文链接

    原文作者:Spring Boot
    原文地址: https://blog.csdn.net/weixin_40581617/article/details/81283907
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞