0%

springBean生命周期(1)

文章字数:455,阅读全文大约需要1分钟

SpringBean从创建、初始化操作、就绪、销毁。组成了一个完整的生命周期。

大致流程

普通的容器和spring的耦合很低,使用过程中不用知道spring的存在,将容器从spring替换成其他容器也可以正常运行。然而部分功能需要用到容器本身的功能和资源,于是spring提供了spring aware系列可以在初始化容器时通过接口的形式提供。

  1. 实例化
  2. 填充属性
  3. 调用BeanNameAware的setBeanName方法
    如果Bean实现此接口,调用setBeanName方法并传入Bean的id
  4. 调用BeanFactoryAware的setBeanFactory方法
    如果Bean实现此接口,调用方法传入Spring工厂本身
  5. 调用ApplicationContextAware的setApplicationContext方法
    如果Bean实现此接口,调用方法传入ApplicationContext,即spring容器上下文
  6. 调用BeanPostProcess的postProssBeforeInitialization方法
    如果Bean实现此接口,调用方法传入(Object bean,String beanName)
    这个方法是在初始化结束时调用,所以通常应用于内存或缓存技术

初始化结束

  1. 如果bean在Spring配置文件中配置了init-method属性,会自动调用配置的初始化方法

  2. 调用InitializingBean的afterPropertiesSet方法

  3. 调用BeanPostProcess的postProcessAfterInitialization方法
    如果Bean实现此接口,调用方法传入(Object bean,String beanName)
    初始化之后调用的方法

  4. Bean准备就绪


销毁

  1. 调用DispostbleBean的destory方法
    在清理阶段,实现此方法的Bean会调用destory方法销毁
  2. 调用指定的销毁方法
    如果在配置文件指定destory-method方法,会自动销毁