Spring Bean的生命周期

Spring Bean的生命周期是从Bean实例化之后,即通过反射创建出对象之后,到Bean成为一个完整对象,最终存储到单例池中,这个过程被称为Spring Bean的生命周期。

Spring Bean的生命周期总体分为四个阶段:实例化=>属性注入=>初始化=>销毁

1.实例化Bean:Spring框架会取出BeanDefinition的信息进行判断当前Bean的范围是否是singleton的,是否不是延迟加载的,是否不是FactoryBean等,最终将一个普通的singleton的Bean通过反射进行实例化;

2.注入对象依赖的属性值(或对象)

3.属性注入后,进行初始化Bean的操作,初始化又涉及以下几个过程:

  1. 处理各种Aware接口:Spring 会检测该 Bean 是否实现了 xxxAware 接口,通过 Aware 类型的接口,可以让 Spring 框架为当前 Bean 注入相应的内容。
    1.  如果 Bean 实现 BeanNameAware 接口,会调用它实现的 setBeanName ( String beanId )方法,注入 Bean 的名字;
    2. 如果 Bean 实现 BeanClassLoaderAware 接口,调用 setBeanClassLoader()方法,注入 ClassLoader 对象的实例;
    3. 如果 Bean 实现 BeanFactoryAware 接口,会调用它实现的 setBeanFactory()方法,注入的是 Spring 工厂;
    4. 如果 Bean 实现 ApplicationContextAware 接口,会调用 setApplicationContext ()方法,注入 Spring 上下文;  
  2.  执行 BeanPostProcessor 前置处理:如果想对 Bean 进行一些自定义的前置处理,那么可以让 Bean 实现了 BeanPostProcessor 接口,将会在该阶段调用 postProcessBeforeInitialization ( Object obj , String s ) 方法。
  3. 执行 InitializingBean 初始化方法:如果 Bean 实现了 InitializingBean 接口,执行 afeterPropertiesSet()方法。
  4. 执行 init-method 自定义初始化方法:如果 Bean 在Spring配置文件中配置了init-method属性,则会自动调用其配置的初始化方法。
  5. 执行 BeanPostProcessor 后置处理:如果这个 Bean 实现了 BeanPostProcessor 接口,将会调用 postProcessAfterInitialization ( Object obj , String s )方法,由于这个方法是在 Bean 初始化结束后调用;

以上几个步骤完成后, Bean 已经被正确创建,可以正常使用这个 Bean 。

4.当Bean不再需要时,进行销毁操作:

  1. 执行 DisposableBean 销毁 Bean :当 Bean 不再需要时,会经过清理阶段,如果 Bean实现了DisposableBean这个接口,会调用其实现的 destroy ()方法执行销毁;
  2. 执行 destroy - method 自定义销毁方法:如果这个Bean的Spring 配置中配置了 destroy - method 属性,会自动调用其配置的自定义销毁方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值