Spring BeanPostProcessors

1.Spring BeanPostProcessors概述

通常,你会发现自己处于这样一种情况,你需要在Spring框架实例化Bean执行一些预处理和后处理。Spring提供了BeanPostProcessor接口,它定义了一个回调方法来实现这个功能。

实现BeanPostProcessor接口的类需要在ApplicationContextSpring Bean配置文件)中定义,并将应用于应用程序上下文中定义的所有Bean

如果Bean配置文件中配置了多个BeanPostProcessor实现,并且它们相互依赖(一个实现的处理对象可以是另一个实现的输入)那么BeanPostProcessor的顺序就很重要。为了控制执行后处理器的顺序,实现BeanPostProcessor的类需要实现Ordered接口并实现其getOrder方法来定义顺序。

BeanPostProcessor接口为我们提供了两个扩展点:

  • Spring Container实例化对象之后,但在初始化之前执行自定义处理
  • 初始化后执行自定义处理。

BeanPostProcessorsBean(或对象)实例进行操作。这意味着Spring IoC容器实例化一个Bean实例,然后BeanPostProcessor接口完成他们的工作。
注意:与Bean相关的initdestroy方法与bean post processors不同。BeanPostProcessors对于所有Bean都很常见,并且在自定义init方法之前执行。

2.BeanPostProcessor接口

BeanPostProcessor接口在org.springframework.beans.factory.config.BeanPostProcessor包下定义,并有两个回调方法
a)postProcessBeforeInitialization - 在对象实例化之后但在初始化之前调用此方法。方法的签名是:

public Object postProcessBeforeInitialization(Object bean, String beanName)
throwsBeansException

b)postProcessAfterInitialization - 在对象初始化后调用此方法。方法的签名是:

public Object postProcessAfterInitialization(Object bean, String beanName)
throwsBeansException

猜你喜欢

转载自blog.csdn.net/qq_35070673/article/details/80267869