Bean的生命周期

BeanFactory中Bean生命周期的完整过程

    

具体过程如下:

(1)getBean(beanName),如果容器注册了InstantiationAwareBeanPostProcessorAdapter接口,则在实例化Bean之前,将           调用接口的postProcessBeforeInstantiation()方法

(2)根据配置情况调用Bean构造函数或工厂方法实例化Bean

(3)如果Bean配置了属性信息,在设置每个属性之前先调用InstantiationAwareBeanPostProcessorAdapter接口的                        postProcessPropertyValues()方法

(4)调用Bean的属性设置方法设置属性值

(5)如果Bean实现了BeanNameAware接口,则调用setBeanName()接口方法 ;BeanFactoryAware接口 --->调用                  setBeanFactory(beanFactory)

(6)如果BeanFactory装配了BeanPostProcessor后处理器,则调用BeanPostProcess.postProcessBeforeInitialization()            方法对Bean进行加工处理。BeanPostProcessor为容器提供对Bean进行后续加工处理的切入点(例如AOP、动态代理等)

(7)如果Bean实现了InitializingBean接口,则调用afterPropertiesSet()方法

(8)如果在<bean>中通过init-method属性定义了初始化方法,则执行此方法

(9)调用BeanPostProcessor的postProcessAfterInitialization()方法

(10)在实例化Bean之后,调用InstantiationAwareBeanPostProcessorAdapter接口的postProcessAfterInitialization()               方法,对已经实例化的对象进行梳妆打扮

(11)对于scope="singleton"的bean,当容器关闭时,将触发Spring对Bean后续生命周期的管理工作,如果Bean实现了DisposableBean接口,则调用接口的destroy()方法

demo演示参考: https://www.cnblogs.com/zrtqsk/p/3735273.html


总结:

1.Bean自身方法:调用构造函数实例化Bean;调用setter设置Bean的属性值及通过<bean>的init-method和destroy-method                                所指定的方法

2.Bean级生命周期接口方法:如BeanFactoryAware,BeanNameAware,InitializingBean,DisposableBean,由Bean类直接实现

3.容器级生命周期接口方法:如InstantiationAwareBeanPostProcessorAdapter,BeanPostProcessor。实现类以容器附加装                                              置的形式注册到Spring容器中,并通过接口反射为Spring容器扫描识别


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值