Spring原码学习第一篇:Spring源码概述

1、Spring获取对象的过程

Spring原码学习第一篇:Spring源码概述_第1张图片

2、Spring源码概述图:

Spring原码学习第一篇:Spring源码概述_第2张图片

2、一些重要的接口

Spring原码学习第一篇:Spring源码概述_第3张图片

BeanDefinition中实现的方法,把xml中定义的对象封装为一个对象,方便后面处理
Spring原码学习第一篇:Spring源码概述_第4张图片

4、BeandefinitionReader

BeandefinitionReader作为一个抽象层来处理配置文件,定义规范,方面扩展,如果再有其他格式的配置文件的话,直接实现该接口即可。

Spring原码学习第一篇:Spring源码概述_第5张图片
Spring原码学习第一篇:Spring源码概述_第6张图片

5、BeanFactory接口

BeanFactory是访问Spring Bean的根接口

BeanFactory
Bean工厂,整个容器的根接口,也是容器的入口
Construct ctor = clazz.getConstructor();
Object obj = ctor.newInstance()

Spring原码学习第一篇:Spring源码概述_第7张图片
这几个接口要特别注意
Spring原码学习第一篇:Spring源码概述_第8张图片

6、 BeanFactoryPostProcessor登场

在容器创建过程中需要动态的改变bean的信息怎么办?
例如: 如果想要随时修改beanDeifinition怎么办?
答案:用 BeanFactoryPostProcessor

例如PlaceholderConfigurerSupport类如下:
Spring原码学习第一篇:Spring源码概述_第9张图片
自己实现BeanFactoryPostProcessor方法如下:
Spring原码学习第一篇:Spring源码概述_第10张图片
Spring原码学习第一篇:Spring源码概述_第11张图片
把beanDefinition信息修改完之后,就可以用反射进行实例化操作了。创建对象分为实例化和初始化。如下:
Spring原码学习第一篇:Spring源码概述_第12张图片

7、 设置Aware接口属性

Aware接口是什么作用?
当Spring容器创建的bean对象在进行具体操作的时候,如果需要容器中的其他对象,此时可以将对象实现Aware接口,来满足需要
Spring原码学习第一篇:Spring源码概述_第13张图片
Spring原码学习第一篇:Spring源码概述_第14张图片

8、 BeanPostProcessor:before、BeanPostProcessor:after 后置增强处理器

Spring原码学习第一篇:Spring源码概述_第15张图片

9、 对象的分类

对象分为两类:一类是普通对象,一类是容器对象
Spring原码学习第一篇:Spring源码概述_第16张图片
Spring需要的对象举例:
Spring原码学习第一篇:Spring源码概述_第17张图片
Bean 工厂实现应尽可能支持标准 Bean 生命周期接口。全套初始化方法及其标准顺序为:
Spring原码学习第一篇:Spring源码概述_第18张图片
在不同的阶段要处理不同的工作,应该怎么办?
观察者模式:监听器,监听事件,多播器(广播器)

10、 BeanFactory 和FactoryBean的区别

都是用来创建对象的;
当使用BeanFactory的时候必须要遵循完整的创建过程,这个过程是由Spring来管理控制的;
而使用FactoryBean只需要调用getObject就可以返回具体的对象,整个对象的创建过程是由用户自己来控制的,更加灵活。

Spring原码学习第一篇:Spring源码概述_第19张图片

你可能感兴趣的:(Spring,spring)