学习主题:源码分析
学习目标:
对应视频:
http://www.itbaizhan.cn/course/id/85.html
对应文档:
无
对应作业
1. Spring源码分析
(1) Spring的运行流程是什么
spring启动时读取Bean配置文件信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖关系
![aa912724807a680eaaeb801d78e33d25.png](https://i-blog.csdnimg.cn/blog_migrate/b789516ef96881c341cd9928922e730e.jpeg)
(2) 写出Spring重要的类和接口以及作用
2. ApplicationContext容器介绍
ApplicationContext内部封装了一个BeanFactory对象,来实现对容器的操作,BeanFactory封装了bean的信息,而ApplicationContext通过访问BeanFactory对象获取bean的对象信息ApplicationContext也实现了一系列的BeanFactory接口(可以说ApplicationContext对BeanFactory对象实现一种代理)
ApplicatonContext在应用这个DefaultListableBeanFactory对象的基础上,不仅实现了BeanFactory接口提供的功能方法,并且黏合了一些面向应用的功能
![053c1ef7b28719fa1c16f02c4929ded8.png](https://i-blog.csdnimg.cn/blog_migrate/4b3456aede9e316702e5f1b9926e8777.jpeg)
ClassPathXmlApplicationContext
![bef2fb4d354f1fac6d8dc5f97d19488a.png](https://i-blog.csdnimg.cn/blog_migrate/3d21cd42b2508a8d2f6c8c473f2bc84f.jpeg)
Refresh() 方法
实例化Bean工厂
DefaultListableBeanFactory
在BeanFactory子类中有一个DefaultListableBeanFactory类.它包含了基本Spring IOC 容器所具有的重要功能,开发时不论是使用BeanFactory系列还是ApplicationContext系列来创建容器基本都会使用到DefaultListableBeanFactory类.可以这么说,在spring中实际上把它当成默认的IOC容器来使用
![98a3038858a81ac1702688f74bf2a4f3.png](https://i-blog.csdnimg.cn/blog_migrate/406aff5d9b1d5ae34f6c80867f7f7e05.jpeg)
解析配置文件
XmlBeanDefinitionReader
![19616ffff471d99a770d79dde11d70a2.png](https://i-blog.csdnimg.cn/blog_migrate/6b3a13b15a6afbe6aba7e1a51737340e.jpeg)
将BeanDefintion注册到容器中
![41dd61629c7ef3b23f19409baf06df55.png](https://i-blog.csdnimg.cn/blog_migrate/586466cfad83cb8c11a8d20fb1f4fd03.jpeg)