初始化阶段
- 实例化bean
- 注入bean属性
- 如果bean有实现aware接口则进行相应的aware注入
如果实现BeanNameAware接口,则调用setBeanName方法
如果实现BeanClassLoaderAware,则调用setBeanClassLoader方法
如果实现ApplicationContextAware,则调用setApplicationContext方法
- 执行BeanPostProcessor的前置处理器
如果bean实现BeanPostProcessor接口,则会调用postProcessBeforeInitialization方法
- 若bean实现了InitializingBean接口,则调用afterPropertiesSet方法
- 若bean定义了init-method熟悉,则调用对应方法
如果bean实现BeanPostProcessor接口,则会调用postProcessAfterInitialization方法
使用阶段
销毁阶段
- 若在bean中定义了destroy熟悉,则调用对应方法
- 若实现DisposableBean接口,则调用destroy方法