Spring学习(三)之依赖注入实现

涉及源码解析。

一. 简单依赖注入测试代码:

Spring学习(三)之依赖注入实现

二. 对BeanFactory bf=newXmlBeanFactory(new ClassPathResource(“…”))分析。

   BeanFactory bf=newXmlBeanFactory(newClassPathResource(“…”));有些过时了。最顶上为核心类XmlBeanFactory继承自 DefautListableBeanFactory 。

   整个BeanFactory类图:

    Spring学习(三)之依赖注入实现

Spring学习(三)之依赖注入实现

总的来说逻辑关系为

Spring学习(三)之依赖注入实现Spring学习(三)之依赖注入实现

1. 将配置文件封装为Resource类 Resource resource= newClassPathResource(“…”);

图示Resource跟ClassPathResource:

Spring学习(三)之依赖注入实现

资源加载方式:

Spring学习(三)之依赖注入实现

2. 对配置文件读取  即new XmlBeanFactory(resource) 一直到doLoadBeanDefinitions

XmlBeanFactory构造函数中有一个方法this.reader.loadBeanDefitions(resource),其中reader为XmlBeanFactoryReader核心类。类图:

Spring学习(三)之依赖注入实现
Spring学习(三)之依赖注入实现

读取配置文件总的逻辑图

 Spring学习(三)之依赖注入实现Spring学习(三)之依赖注入实现

文字描述为:

Spring学习(三)之依赖注入实现
Spring学习(三)之依赖注入实现

考虑到Resource可能有编码要求故EncodeResource.

3. doLoadBeanDefinitions

总图:

Spring学习(三)之依赖注入实现Spring学习(三)之依赖注入实现

三个步骤对应三个函数:

Spring学习(三)之依赖注入实现

Spring学习(三)之依赖注入实现

三. 对第二句话getbean分析,未完待续...