Spring 后处理器

两种后处理器

Bean后处理器

这种后处理器会对容器中的Bean进行后处理,对Bean进行额外加强
Bean后处理器会在Bean实例创建成功之后,对Bean实例进行进一步的增强处理
必须实现BeanPostProcessor接口,该接口主要包含如下两个方法:

  1. Object postProcessBeforeInitization(Object bean,String name) throws beansException
  2. Object postProcessAfterInitization(Object bean,String name) throws beansException

第一个参数bean为系统即将进行后处理的Bean实例,第二个参数是该Bean的配置id

public class MyBeanPostProcessor implements BeanPostProcessor {
	/**
	* 对容器中的Bean实例进行后处理
	* @param bean需要进行后处理的原bean实例
	* @param beanName 需要进行后处理的Bean的配置id
	* @return 返回后处理完成的Bean
	*/
	public Object postProcessBeforeInitization(Object bean,String beanName){
		System.out.println("Bean后处理器在初始化之前对"+beanname+"进行增强处理");
		return bean;
	}
	public Object postProcessAfterInitization(Object bean,String beanName){
		System.out.println("Bean后处理器在初始化之后对"+beanname+"进行增强处理");
		return bean;
	}
}

容器中一旦注册了Bean后处理器,Bean后处理器就会自动启动,在容器中每个Bean创建时自动工作,加入Bean后处理器需要完成的工作。
回调时机

Created with Raphaël 2.2.0 注入依赖关系 回调postProcessBeforeInitialization进行后处理 调用afterPropertiesSet 调用init-method方法 回调postProcessAfterInitialization进行后处理 结束

Bean后处理器一般用于生成Proxy,如Spring提供的两个常用的后处理器BeanNameAutoProxyCreator和DefaultAdvisorAutoProxyCreator

容器后处理器

这种后处理器对IoC容器进行后处理,用于增强容器功能。一般地,Bean后处理器用于处理容器中的所有Bean实例,而容器后处理器则负责处理容器本身。

必须实现BeanFactoryPostProcessor接口,实现方法
void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
若ApplicationContext作为容器,可以自动检测到容器中的容器后处理器,并且自动注册容器后处理器,但是若使用BeanFactory作为Spring容器,则必须手动调用该容器后处理器来处理BeanFactory容器。

public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
	/**
	* 重写该方法,对spring进行后处理
	* @param beanFactory spring容器本身
	*/
	public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
	throws BeansException{
		System.out.println("程序对Spring所做的BeanFactory的初始化没有改变...");
		System.out.println("Spring容器是"+beanFactory);
	}
}

Spring已提供如下几个常用的容器后处理器:
PropertyPlaceholderConfigurer:负责读取properties属性文件里的属性值,并将这些属性值设置成Spring配置文件的数据;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值