Spring中bean的生命周期在Web应用程序启动过程中,Spring容器中的每个bean也有各自的初始化顺序。一个bean,从bean definition被加载到初始化完成,按照以下顺序执行:
1. BeanFactory加载完bean definition和class,实例化除了bean对象。
2. 检查有没有实现BeanNameAware,有则调用setBeanName(得到bean id)
3. 检查有没有实现BeanClassLoaderAware,有则调用setBeanClassLoader。
4. 检查有没有实现EnvironmentAware,有则调用setEnvironment。
5. 检查有没有实现EmbeddedValueResolverAware,有则调用setEmbeddedValueResolver。
6. 检查有没有实现ResourceLoaderAware,有则调用setResourceLoader。
7. 检查有没有实现ApplicationEventPublisherAware,有则调用setApplicationEventPublisher。
8. 检查有没有实现MessageSourceAware,有则调用setMessageSource。
9. 检查有没有实现ApplicationContextAware,有则调用setApplicationContext。
10. 检查有没有实现ServletContextAware,有则调用setServletContext。
11. 调用BeanPostProcessors中的所有postProcessBeforeInitialization,对bean进行一些更进一步的配置。
12. 调用InitializingBean接口中的afterPropertiesSet执行bean自身提供的初始化代码。
13. 调用通过其他方式指定的init-method方法,执行bean自身的初始化。
14. 调用BeanPostProcessors中的所有postProcessAfterInitialization方法。
Spring Bean的生命周期
最新推荐文章于 2022-05-20 15:23:25 发布