Spring的Bean生命周期理解

  首先,在经历过不少次的面试以后,一直不能很好的叙述关于springbean的生命周期这个概念。今日对于springBean的生命周期进行一个总结。面试

1、springBean的生命周期:

  以下图所示:spring

经过这张图能大体看懂spring的生命周期,详解:函数

  1. instantiate bean对象实例化
  2. populate properties 封装属性
  3. 若是Bean实现BeanNameAware执行setBeanName
  4. 若是Bean实现BeanFactoryAwarApplicationContextAwar设置工厂setBeanFactory或上下文对象setApplicationContext
  5. 若是存在类实现BeanPostProcessor(后处理Bean),执行postProcessBeforeInitialization
  6. 若是Bean实现InitializingBean执行afterPropertiesSet
  7. 调用自定义的init-method方法
  8. 若是存在类实现BeanPostProcessor(处理Bean),执行postProcessAfterInitialization
  9. 执行业务处理
  10. 若是Bean实现DisposableBean执行destroy
  11. 调用自定义的destroy-method

  第一步就是对实例化bean,调用构造函数来建立实例,第二步是根据配置,进行相应属性的设置,依赖注入就是在这一步完成的。post

  第三步和第四步是让spring去了解我们的spring容器,第五步和第八步能够针对指定的Bean进行功能加强,这时通常是采用的动态代理,(两种动态代理方式:jdk动态代理和cglib动态代理)。第六步和第十步是经过实现指定的接口来完成init(初始化)和destory(销毁)操做。可是咱们在一般状况下不会使用这两步,由于咱们能够经过第七步和第十一步,在配置文件中设置相应的初始化和销毁方法。spa

  好比:代理

  总结:对象

    对于springbean的生命周期,咱们须要关注的主要有两个方法:blog

      1.加强bean的功能可使用后处理Bean,BeanPostProcessor接口

      2.若是须要初始化或销毁操做,咱们可使用init-method方法和destory-method方法。生命周期

  同时还须要注意一点:destory-method方法是只针对于scope=singleton的时候才有效果!

相关文章
相关标签/搜索