一、BeanPostProcessor 概述
spring为我们提供了一个BeanPostProcessor接口,该接口扩展了bean创建时指定的init-method方法的功能。BeanPostProcessor接口有两个方法,用于在bean的初始化方法前后执行对应的方法 且相对于bean的init方法来说,BeanPostProcessor更具有通用性,它对spring中所有的bean都有效。
二、示例
- MyBeanPostProcessor类
MyBeanPostProcessor是自己新建的类,实现了BeanPostProcessor接口,代码如下:/** * BeanPostProcessor 接口提供了在bean的创建过程中的一种扩展能力 * 它是对 bean的init-method方法的一种扩充 * 相对于 init-method 更加的通用,它是对spring中所有bean的创建都有效 * @date 2020/9/1 11:45 PM */ public class MyBeanPostProcessor implements BeanPostProcessor { /** * bean初始化之前调用该方法 init-method方法之前执行 * @param bean * @param beanName * @return * @throws BeansException */ public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println("bean 调用初始化方法之前调用 beanName = " + beanName ); return bean; } /** * bean销毁前调用该方法 * @param bean * @param beanName * @return * @throws BeansException */ public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println("bean 调用初始化方法之后调用 beanName = " + beanName ); return bean; } }
- xml配置
<!-- 配置bean的后置处理器 beanpostprocessor--> <bean id = "myBeanPostProcessor" class="com.haici.spring.demo.proccess.MyBeanPostProcessor">
- 测试结果
bean 调用初始化方法之前调用 beanName = myfactry bean 执行初始化方法 bean 调用初始化方法之后调用 beanName = myfactry