Spring Bean生命周期理解

Spring Bean生命周期理解

BeanFactory接口是Spring的首要核心接口,要学习Spring必须对此接口深度理解。在阅读此接口源码的时候,刚好发现了接口文档对应的就是SpringBean的生命周期介绍。

以下为原文:

Bean factory implementations should support the standard bean lifecycle interfaces as far as possible. The full set of initialization methods and their standard order is:
1. BeanNameAware’s setBeanName
2. BeanClassLoaderAware’s setBeanClassLoader
3. BeanFactoryAware’s setBeanFactory
4. EnvironmentAware’s setEnvironment
5. EmbeddedValueResolverAware’s setEmbeddedValueResolver
6. ResourceLoaderAware’s setResourceLoader (only applicable when running in an application context)
7. ApplicationEventPublisherAware’s setApplicationEventPublisher (only applicable when running in an application context)
8. MessageSourceAware’s setMessageSource (only applicable when running in an application context)
9. ApplicationContextAware’s setApplicationContext (only applicable when running in an application context)
10. ServletContextAware’s setServletContext (only applicable when running in a web application context)
11. postProcessBeforeInitialization methods of BeanPostProcessors
12. InitializingBean’s afterPropertiesSet
13. a custom init-method definition
14. postProcessAfterInitialization methods of BeanPostProcessors
On shutdown of a bean factory, the following lifecycle methods apply:
1. postProcessBeforeDestruction methods of DestructionAwareBeanPostProcessors
DisposableBean’s destroy
2. a custom destroy-method definition


BeanFactory实现应该尽可能支持标准的bean生命周期接口。标准的初始化方法及其顺序是:

  1. BeanNameAware类的setBeanName方法调用
  2. BeanClassLoaderAware类的setBeanClassLoader方法调用
  3. BeanFactoryAware类setBeanFactory方法调用
  4. EnvironmentAware类setEnvironment方法调用
  5. EmbeddedValueResolverAware类setEmbeddedValueResolver方法调用
  6. ResourceLoaderAware类setResourceLoader方法调用(仅在ApplicationContext下才会调用)
  7. ApplicationEventPublisherAware类setApplicationEventPublisher方法调用 (仅在ApplicationContext下才会调用)
  8. MessageSourceAware类setMessageSource方法调用 (仅在ApplicationContext下才会调用)
  9. ApplicationContextAware类setApplicationContext方法调用 (仅在ApplicationContext下才会调用)
  10. ServletContextAware类setServletContext方法调用 (仅在WebApplicationContext下才会调用)
  11. BeanPostProcessor类postProcessBeforeInitialization方法调用
  12. InitializingBean类afterPropertiesSet方法调用
  13. 自定义初始化方法调用init-method
  14. BeanPostProcessor类postProcessAfterInitialization方法调用

在Bean容器关闭的时候,销毁方法流程如下:

  1. DestructionAwareBeanPostProcessor类postProcessBeforeDestruction方法调用
  2. DisposableBean类的destroy方法调用
  3. 自定义销毁方法destroy-method调用

以上清晰的描述了Spring容器中Bean标准生命周期过程,后面文章我将会对每一步生命周期进行学习分析。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值