完整的Bean的声明周期
Bean的完整生命周期从Spring容器着手实例化Bean开始,知道最终销毁Bean,其中经历了许多关键点,每个关键点都涉及特定的方法调用,可以将这些方法大致分为4类:
-
Bean自身的方法:
如:
- 调用Bean构造参数实例化Bean、
- 调用Setter设置Bean的属性值
- 通过
的init-method和destory-method属性所指定的方法
-
Bean级生命周期接口方法:
如:
- BeanNameAware 接口中的方法
- BeanFactoryAware 接口中的方法
- InitializingBean 接口中的方法
- DisposableBean 接口中的方法
这些接口方法由Bean类直接实现。
-
容器级生命周期接口方法:
如:
- InstantiationAwareBeanPostProcessor 接口中的方法
- BeanPostProcessor 接口中的方法
这两个接口都在org.springframework.beans.factory.config下,一般称它们的实现类为“后处理器”(PostProcessor),它们独立于Bean,其实现类以容器附加装置的形式注册到Spring容器中,并通过接口反射为Spring容器扫描识别。当Spring容器创建任何Bean的时候,这些后处理器都会发生作用。用户也通过合理地编写后处理器,让其只对感兴趣的Bean惊醒加工处理。
-
工厂后处理器接口方法:
如:
- AspectJWeavingEnabler 方法
- CustomAutowireConfigurer 方法
- ConfigurationClassPostProcessor 方法
工厂后处理器也是容器级的,在应用上下文装配配置文件之后立即调用。