Bean后处理器用于对Spring容器中的Bean进行扩展,使用Bean后处理器可以对Bean进行额外的加强处理
Bean后处理器必须实现BeanPostProcessor接口,该接口包含如下两个方法:
1>void postProcessBeforeInitialization(Object bean,String name) throws BeanException:该方法用于在目标Bean初始化之前被回调,该方法的第一个参数是目标Bean的Bean实例,第二个参数是该Bean的配置id/name
2>void postProcessAfterInitialization(Object bean,String name) throws BeanException:该方法用于在目标Bean初始化之后被回调,该方法的第一个参数是目标Bean的Bean实例,第二个参数是该Bean的配置id/name
当我们自定义实现BeanPostProcessor接口的Bean后处理器后,然后将其配置到spring配置文件中,配置方式和普通Bean配置方式一样,不过不需要为其指定任何参数属性,因为Spring容器会自动为其传入参数的。有两种情况:
1>Spring容器为ApplicationContext的情况:ApplicationContext会自动扫描检测容器中的所有Bean,如果发现某个Bean类实现了BeanPostProcessor接口,它会自动将其注册为Bean后处理器的
2>Spring容器为BeanFactory的情况:我们需要手动注册Bean后处理器,程序必须先获取bean后处理器实例,然后手动注册,这时候我们就需要为Bean后处理器指定id属性,因为需要获取该实例,然后调用BeanFactory.addBeanPostProcessor(BeanPostProcessor)方法将其注册为Bean后处理器