2. Spring源码xml标签属性配置解析
2.1 Spring加载容器的方式
-
类路径获取配置文件ClassPathXmlApplicationContext
-
文件系统路径获取配置文件绝对路径FileSystemXmlApplicationContext
-
注解方式加载容器 AnnotationConfigApplicationContext
-
Springboot 加载容器 EmbeddWebApplicationContext
下面主要通过ClassPathXmlApplicationContext加载spring.xml的方式进行介绍。
2.2 Spring xml标签解析流程
refresh()方法中的 obtainFreshBeanFactory()负责解析spring定义的xml标签并将标签内容封装成BeanDefinition对象。
refreshBeanFactory()调用子类实现的方法,该方法采用了模板方法模式
XmlBeanDefinitionReader使用了委托模式
通过XmlBeanDefinitionReader对象对配置文件进行加载
2.1.1 默认标签解析
解析Element, 将其封装成BeanDefinition
2.1.2 自定义标签解析
namespaceUri与NamespaceHandler