Spring Bean 的生命周期

Spring Bean 的生命周期

1.加载Bean定义

通过 loadBeanDefinitions 扫描所有xml配置、注解将Bean记录在beanDefinitionMap中

2.创建Bean对象

通过 createBean 遍历 beanDefinitionMap 创建bean

2.1.构建对象

  1. 容器通过 createBeanInstance 进行对象构造
  2. 获取构造方法:@Autowired
  3. 准备参数 根据类查找>参数名查找
  4. 构造对象
  5. 无参对象直接实例化

2.2.填充属性

通过populateBean方法为Bean内部所需的属性进行赋值

  • 通常是 @Autowired 注解的变量

2.3.初始化Bean对象

通过initializeBean对填充后的实例进行初始化

填充初始化容器相关信息

通过 invokeAwareMethods 方法:为实现aware接口【信息感知接口】的Bean 设置注入beanName、beanFactory等容器信息

初始化构造方法

通过 invokeInitMethods 方法进行初始化:

如果Bean实现InitializingBean接口进行处理【未实现则不进行】

  • afterPropertiesSet方法【bean填充属性后执行】
  • initMethod 方法

Bean的后置处理

invokeInitMethods 的前后进行

  • applyBeanPostProcessorsBeforeInitialization
  • invokeInitMethods
  • applyBeanPostProcessorsAfterInitialization

在后置处理中处理了包括:AOP【AnnotationAwareAspectJAutoProxyCreator】

负责 构造后@PostConstruct销毁前@PreDestroy 的 InitDestoryAnnotationBeanPostProcessor 等

注册销毁

通过reigsterDisposableBean处理实现了DisposableBean接口的Bean的注册

3.添加到单例池

通过 addSingleton 方法,将Bean 加入到单例池 singleObjects

4.销毁

4.1.销毁前

调用 bean中@PreDestory 注解的方法

通过 postProcessBeforeDestruction 方法调用destoryBean逐一销毁Bean

4.2.销毁

调用 destoryBeans

4.3.执行客户自定义销毁

调用 invokeCustomDestoryMethod

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值