解释一下spring bean的生命周期#

  1. 实例化 Spring 容器通过反射创建 Bean 对象
  2. 属性注入(依赖注入) 自动装配 @Autowired、配置属性等,完成依赖赋值。
  3. Aware 接口回调 让 Bean 感知自身身份 / 所属容器. 常用的aware:BeanNameAware,BeanFactoryAware,ApplicationContextAware
  4. 前置处理(BeanPostProcessor 前置) 执行后置处理器前置方法
  5. 初始化阶段 执行 @PostConstruct 注解方法 执行 InitializingBean#afterPropertiesSet() 执行 init-method(XML / 注解指定初始化方法)
  6. 后置处理(BeanPostProcessor 后置) 执行后置处理器后置方法,Bean 完成增强。
  7. 就绪可用 容器正常运行,Bean 对外提供服务
  8. 销毁阶段 执行 @PreDestroy 注解方法 执行 DisposableBean#destroy() 执行 destroy-method