Spring Bean生命周期
2022-08-25 14:31:58 14 举报
spring生命周期
作者其他创作
大纲/内容
populateBean
createBean
如果是DisposableBean,则执行destroy方法 ,执行自定义销毁方法
doCreateBean->BeanUtils(ctor.newInstance)
是否配置destroy-method
resolveBeforeInstantiation
beanPostProcessor的before方法
bean实例化对象
包括@PostConstruct注解的处理
BeanDefinition合并阶段
初始化对象属性
如果是SmartInitializingSingleton,执行afterSingletonsInstantiated方法
执行所有BeanPostProcessor的after方法
applyBeanPostProcessorsBeforeInitialization
简易版
Bean赋值前InstantiationAwareBeanPostProcessor接口postProcessPropertyValues方法,对PropertyValues进行自定义
检查是否配置init_method
如果是InitializingBean,则调用afterPropertiesSet方法
beanFactory.getBean()
实例化后InstantiationAwareBeanPostProcessor接口postProcessAfterInstantiation方法,返回false则Bean不再会被根据元信息赋值
实现aware接口,执行aware方法
是否实现DisposableBean
initializeBean
如果是InitializingBean,则调用afterPropertiesSet方法,如果有自定义初始化方法,则调用自定义初始化方法
beanFactory.destroyBean
反射实例化创建对象
实例化前InstantiationAwareBeanPostProcessor接口postProcessBeforeInstantiation方法返回如果不等于null,将该方法返回对象直接返回,Bean生命周期终止。
initializeBean->invokeAwareMethods
invokeInitMethods
执行DestructionAwareBeanPostProcessor接口postProcessBeforeDestruction方法,包括调用@PreDestroy注解方法
getMergedLocalBeanDefinition
beanFactory.preInstantiateSingletons();
0 条评论
回复 删除
下一页