Spring框架学习—Spring的生命周期
1. Bean ⽣命周期的整个执⾏过程描述:
- 根据配置情况调⽤
Bean
构造⽅法或⼯⼚⽅法实例化 Bean。 - 利⽤依赖注⼊完成
Bean
中所有属性值的配置注⼊(注解,xml等方式)
。 - 如果
Bean
实现了BeanNameAware(Aware是发现的意思)
接⼝,则Spring
调⽤Bean
的setBeanName()
⽅法传⼊当前Bean
你自己给Bean
定义的id
值。 - 如果
Bean
实现了BeanFactoryAware
接⼝,则Spring
调⽤setBeanFactory()
⽅法传⼊当前⼯⼚实例的引⽤。 - 如果
Bean
实现了ApplicationContextAware
接⼝,则Spring
调⽤setApplicationContext()
⽅法传⼊当前ApplicationContext
实例的引⽤。 - 如果
BeanPostProcessor
和Bean
关联,则Spring
将调⽤该接⼝的预初始化⽅法postProcessBeforeInitialzation()
对Bean
进⾏加⼯操作,此处⾮常重要,Spring
的AOP
就是利⽤它实现的。 - 如果
Bean
实现了InitializingBean
接⼝,则Spring
将调⽤afterPropertiesSet()
⽅法。 - 如果在配置⽂件中通过
init-method
属性指定了初始化⽅法,则调⽤该初始化⽅法。 - 如果
BeanPostProcessor
和Bean
关联,则Spring
将调⽤该接⼝的初始化⽅法postProcessAfterInitialization()
。此时,Bean
已经可以被应⽤系统使⽤了。 - 如果在
<bean>
中指定了该Bean
的作⽤范围为scope="singleton"
,则将该Bean
放⼊Spring IoC
的缓存池中,将触发Spring
对该Bean
的⽣命周期管理;如果在<bean>
中指定了该Bean
的作⽤范围为scope="prototype"
,则将该Bean
交给调⽤者 - 如果
Bean
实现了DisposableBean
接⼝,则Spring
会调⽤destory()
⽅法将Spring
中的Bean
销毁;如果在配置⽂件中通过destory-method
属性指定了Bean
的销毁⽅法,则Spring
将调⽤该⽅法对Bean
进⾏销毁。