Spring核心类

2018-05-08  本文已影响0人  弥勒佛liuz


Spring的目的:让bean成为一个纯粹的POJO(注册和加载bean)

Spring IOC:控制反转(依赖对象的获得被反转)。很多时候需要通过多个对象之间的协作来完成一个功能,若果获取所依赖对象靠自身实现,将导致代码耦合度高且难以测试。

Spring IOC通过引入xml配置,由IOC容器来管理生命周期和依赖关系。之前获取两个有依赖关系的对象要用set方法,用了容器之后,它们的关系由容器来管理。

传统写法: B b = new B();  A a = new A();  b.setA(a) 

Spring获取:ApplicationContext ac = new classPathXmlApplicationContext("beans.xml"); B b = (B) ac.getBean("B");

1. DefaultListableBeanFactory

XmlBeanFactory继承自DefaultListableBeanFactory,而DefaultListableBeanFactory是整个bean加载的核心部分,是spring注册及加载bean的默认实现。

XmlBeanFactory中使用了自定义的XML读取器XmlBeanDefinitionReader,实现了个性化的BeanDefinitionReader读取;DefaultListableBeanFactory继承了AbstractAutowireCapableBeanFactory并实现了ConfigurableListableBeanFactory以及BeanDefinitionBeanFactory接口。

XmlBeanFactory对DefaultListableBeanFactory类进行了扩展,从XML文档中读取BeanDefinition,对于注册及获取Bean都是从父类DefaultListableBeanFactory继承的方法实现。唯独与父类不同的个性化实现就是增加了XmlBeanDefinitionReader类型的reader属性。在XmlBeanFactory中主要使用reader属性对资源文件进行读取和注册。

2.XmlBeanDefinitionReader

XML配置文件的读取是Spring中的重要功能,大致流程如下:

1)通过继承自AbstractBeanDefinitionReader中得方法,来使用ResourceLoader将资源文件路径转换为对应的Resource文件;

2)通过DocumentLoader对Resource文件进行转换,将Resource文件转换为Document文件;

3)通过实现接口BeanDefinitionDocumentReader的DefaultBeanDefinitionDocumentReader类对Document进行解析,并使用BeanDefinitionParserDelegate对Element进行解析。

References:《Spring源码深度解析》

上一篇 下一篇

猜你喜欢

热点阅读