Spring Bean 的生命周期

概述

  1. Spring 启动,扫描指定的包路径,查找需要被 Spring 管理的 bean
  2. 构造 BeanDefinition 对象
  3. 实例化 bean,如果有多个构造方法,则需要推断构造方法,确定好构造方法后,进行实例化得到一个对象
  4. 进行 bean 的属性注入
  5. 如果 bean 实现了 BeanNameAware 接口,Spring 将会 beanid 传递给 setBeanName() 方法
  6. 如果 bean 实现了 BeanFactoryAware 接口,Spring 将会调用 setBeanFactory() 方法,将 BeanFactory 容器实例传入
  7. 如果 bean 实现了 ApplicationContextAware 接口,Spring 将调用 setApplicationContext() 方法,将 bean 所在的应用上下文引用传入进来
  8. 如果 bean 实现了 BeanPostProcessor 接口,Spring 将调用 postProcessBeforeInitialization() 方法
  9. 执行 bean 的初始化构造器方法
    • 如果 bean 的方法中有 @PostConstruct 注解标注的方法,Spring 将执行这些方法
    • 如果 bean 实现了 InitializingBean 接口,Spring 将调用 afterPropertiesSet() 方法
    • 如果 bean 使用 init-method 声明了初始化方法,Spring 将调用这个方法
  10. 如果 bean 实现了 BeanPostProcessor 接口,Spring 会调用 postProcessAfterInitialization() 方法
  11. 至此,bean 已经准备就绪,将会放入容器中
  12. Spring 容器关闭时,执行销毁方法
    • 如果 bean 的方法中有 @PreDestroy 注解标注的方法,则执行这些方法
    • 如果 bean 实现了 DisposableBean 中的 destory() 方法, 则调用 destory 方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值