Spring加载XML的过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring加载XML的过程相关的知识,希望对你有一定的参考价值。

参考技术A 首先,Spring加载配置文件是在refresh#obtainFreshBeanFactory方法中进行的。

逻辑是在loadBeanDefinitions方法中进行的,Spring对loadBeanDefinitions方法做了很多重载。

在new ResourceEntityResolver(this)中

这里初始化了xsd/dtd的映射类,现在一般是使用xsd。
PluggableSchemaResolver#resolveEntity方法会读取META-INF/Spring.schemas文件,该文件配置的是kv数据,k是xsd的网络地址,v是本地地址,为了防止在未联网的情况下解析不了标签。

这里遍历了配置文件数组

doLoadDocument加载了配置文件主要看registerBeanDefinitions方法

parseBeanDefinitionElement(
Element ele, String beanName, @Nullable BeanDefinition containingBean)

在这个方法中就是解析标签中的属性了,将BeanDefinition创建出来,把属性set到BeanDefinition中

如何让是spring启动时加载一个类。这里类实现了读取xml配置数据到内存中(不是属性文件)

<bean id="readXmlService" class="com.xxx.xxx.readXmlServiceImpl" init-method="init"></bean>

这样配置你的读取xml的服务,spring框架会在启动的时候自动跑 readXmlServiceImpl中的init方法,所以你只要将读取xml的过程放到init方法里,那在spring启动的时候就会自动将xml中数据读取到内存中。

参考技术A 只要你把这个类配置到了applicationContext.xml或其他Spring配置文件中就可以在启动时加载这个类了。xml配置的数据会自动由Spring注入 参考技术B 可以实现的

以上是关于Spring加载XML的过程的主要内容,如果未能解决你的问题,请参考以下文章

spring启动加载过程源码分析

spring的BeanFactory加载过程

spring 配置文件不是放在src目录下怎么加载

Spring BeanDefinition的加载

深入理解 spring 容器,源码分析加载过程

看看Spring的源码——Bean加载过程