Spring中Bean的生命周期
***bean的生命周期描述的是Spring中的一个bean的创建过程和销毁过程中所经历的步骤。其中bean的创建是重点,程序猿可以利用bean的生命周期机制对bean进行自定义加工。bean生命周期中有几个核心步骤***
第一:BeanDefinition对象的创建(bean定义)
第二:构造方法的推断:(选出一个构造方法)
第三:实例化:(构造方法通过反射得到对象)
第四:属性填充:给属性进行自动赋值
第五:初始化对其他属性赋值,校验
第六:初始化后:AOP生成代理对象
BeanDefintion:
BeanDefinition表示定义,它定义了某个Bean的类型,Spring就是利用BeanDefinition来创建Bean的。比如需要利用BeanDefinition中的BeanClasss属性确定Bean的类型,从而实例化出来对象。
构造方法推断:
一个Bean中可以有多个构造方法,此时就需要Spring来判断到底那个是哪个构造方法,这个过程是比较复杂,这里不展开介绍了,通过构造方法推断之后确定一个构造方法后,就可以利用构造方法实例化得到一个对象了。
实例化:
通过构造方法反射得到一个实例化对象,在Spring中,可以通过BeanPostProcessor机制对实例化进行干预
属性填充:
实例化所得到的对象,是不完整的对象,不完整的意思是该对象中的某些属性还没进行属性填充,也就是Spring还没有自动给某些属性赋值,属性填充就是我们通常说的自动注入,依赖注入
初始化:
在一个对象的属性填充之后,Spring提供了初始化机制,程序员可以利用初始化机制对Bean进行自定义加工,比如可以利用InitializingBean接口来对Bean中的其他属性就行赋值或对某些属性进行校验
初始化后:
初始化后是Bena创建生命周期中最后一个步骤,我们常说的AOP机制,就是在这个步骤中通过BeanPostProcessor机制实现的,初始化之后得到的对象,才是真正的Bean对象