核心类:
Spring核心类主要包含下面两个:
-
DefaultListableBeanFactory
-
XmlBeanDefinitionReader
关于DefaultListableBeanFactory相关类继承关系如下:
- Object (java.lang)
- SimpleAliasRegistry (org.springframework.core)
主要是使用map作为alias的缓存,并对接口AliasRegistry实现。 - DefaultSingletonBeanRegistry
(org.springframework.beans.factory.support)
对SingletonBeanRegistry各函数实现。 - FactoryBeanRegistrySupport (org.springframework.beans.factory.support)
在DefaultSingletonBeanRegistry基础上增加了对FactoryBean的特殊处理。 - AbstractBeanFactory (org.springframework.beans.factory.support)
综合FactoryBeanRegistrySupport和ConfigurableBeanFactory的功能。 - AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
综合AbstractBeanFactory并对接口AutowireCapableBeanFactory进行实现。 - DefaultListableBeanFactory (org.springframework.beans.factory.support)
综合上面所有功能,主要是对Bean注册后的处理。 - XmlBeanFactory (org.springframework.beans.factory.xml) (Deprecated)
对DefaultListableBeanFactory扩展,从xml文档中读取BeanDefinition,对于注册和获取Bean都是从父类DefaultListableBeanFactory继承的方法去实现。与父类不同的是,增加了XmlBeanDefinitionReader类型的reader属性,使用reader属性对资源文件进行读取和注册。
关于XmlBeanDifinitionReader相关类继承关系如下:
XML读取大致流程:
- 通过继承AbstractBeanDefinitionReader中的方法,使用ResourceLoader将资源文件路径转换为对应Resource文件。
- 通过DocumentLoader对Resource文件进行转换,将Resource文件转换为Document文件。
- 通过实现接口BeanDefinitionDocumentReader的DefaultBeanDefinitionDocumentReader类对Document进行解析,并使用BeanDefinitionParserDelegate对Element进行解析。
Example:
// 构造工厂
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
// 新增Xml阅读器
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);
// 规则注册入容
reader.loadBeanDefinitions(new ClassPathResource("ClassPath:spring-config.xml"));
UserDto userDto = factory.getBean(UserDto.class);
注意:不用XmlBeanFactory,因为在spring3.1中已经将该方法废弃。
资源文件处理相关类图:
未完待续。。。


被折叠的 条评论
为什么被折叠?



