Spring Bean 处理器
在本文中,我们将研究分析下 Spring 的 bean 处理器是如何工作的。
Spring Bean 处理器提供了灵活的机制,方便我们在 Bean 初始化前和初始化后对 Bean 做一些特殊的处理。
Spring Bean 处理器负责处理 Spring IoC 容器中每一个可用的 Bean 实例。
介绍
在开发详细研究 Spring Bean 处理器之前,我们先通过图解的方式,直观的了解一下 Spring Bean 在 Spring Bean 初始化过程中具体的位置:
Spring Bean 的整个生命周期如下:
Spring 从 xml 中,或者是 classpath 中加载 bean 定义
将得到的 bean 定义添加到 BeanFactory 中
在创建 bean 的过程中,Spring 的 DI 就会如上图所示处理 Bean 的依赖关系
BeanPostProcessor 可以让开发在 bean 的初始化前、后增加一些额外的处理逻辑
Bean 创建并初始化完成,等待程序去使用
Spring BeanPostProcessor
Spring BeanPostProcessor 是一个工厂钩子,允许对新 bean 进行修改。在 BeanPostProcessor 接口中定义了两个方法:
postProcessAfterInitialization:在任何 bean 初始化回调之后,将此 BeanPostProcessor 应用到给定的新 bean 实例。
postProcessBeforeInitialization:在任何 bean 初始化之前,对给定的新 bean 实例应用这个 BeanPostProcessor。
接下来,我们通过一个例子来更好的理解下 BeanPostProcessor:
Spring 会将所有 bean 的创建都经过 CustomBeanPostProcessor 处理一遍。
注册 Bean 处理器
在 Spring 中注册 Bean 处理器的方法非常简单,只要将该处理器声明成一个 Spring Bean 就可以了:
总结
通过了解了 Bean 处理器是如何工作的,可以让我们在实际的开发过程更方便的实现一些特殊的处理需求,而不必侵入 Bean 类中
评论