参与Bean的生命周期
Spring容器是个神奇的魔法师。瞧!我们把写好的类和配置文件放进Spring容器里,Spring容器就能变出各种各样的Bean。之后,各种各样的Bean存在Spring容器里,相互依赖,彼此合作,又构成一个繁忙的应用程序,处理着来自远方的各种请求;直到应用程序退出,Spring容器关闭,Bean才消失在历史的长河中。由此可见,存在Spring容器里的Bean有个从诞生到消亡的过程,这个过程俗称Bean的生命周期,具体如下:
01.运行Web应用程序
02.创建Spring容器
03.加载配置文件生成Bean的定义
04.创建实现了BeanFactoryPostProcessor接口的Bean,调用postProcessBeanFactory方法
05.创建实现了BeanPostProcessor接口的Bean
06.创建其它类型的Bean
07.通过属性注入依赖
08.调用Aware接口的方法
09.调用postProcessBeforeInitialization方法
10.调用afterPropertiesSet方法初始化Bean
11.调用postProcessAfterInitialization方法
12.存在Spring容器里的Bean开始支持整个应用程序的运行
13.退出Web应用程序
14.关闭Spring容器
15.调用destroy方法销毁Bean
可以看到Bean的生命周期从开始到结束总共经历十五个阶段,每个阶段都有每个阶段该做的事。现在,让我们以庖丁解牛的手法剖开各个阶段,瞧瞧里头具体是怎样的,以及怎样写些代码参与进去,做些我们想做的事。
阶段一:运行Web应用程序
这是事情的开端。在此阶段,Web容器将会加载和初始化Web应用程序,使之运行起来。
阶段二:创建Spring容器
Web容器初始化Web应用程序的时候,Web应用程序将会根据部署描述文件提供的信息创建两个Spring容器:一个是根应用上下文;一个是Servlet应用上下文。每个容器都有自己创建和管理着的Bean。Bean的生命周期是与Bean所在的容器关联的。
阶段三:加载配置文件生成Bean的定义
Web应用程序创建Spring容器的时候,Spring容器将会加载配置文件,解析配置文件,根据配置文件提供的信息生成BeanDefinition对象。BeanDefinition对象俗称Bean的定义,保存着关于如何创建Bean的信息。
阶段四:创建实现了BeanFactoryPostProcessor接口的Bean,调用postProcessBeanFactory方法
BeanFactoryPostProcessor是Spring提供的一个接口,具体如下:
1 public interface BeanFactoryPostProcessor { 2 void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) 3 throws BeansException; 4 }