使用spring的特殊bean

特殊bean的作用:
1、	通过配置后加工bean,涉及到bean和bean工厂的声明周期中
2、	从外部配置文件中加载配置信息
3、	改变spring的依赖注入,使其在设置bean属性时,自动将字符串转换成其他类型
4、	从属性文件中加载文本信息,包括国际化信息
5、	监听并处理由其他bean以及spring容器发布的系统消息
一、对bean进行后处理
BeanPostProcessor接口提供机会来修改bean
示例:
	//初始化bean  之后的操作
	@Override
	public Object postProcessAfterInitialization(Object object, String beanName)
			throws BeansException {
				//可以判断beanName名称处理
		if("personServiceBean".equals(beanName)){
			System.out.println("=======================================after");
			System.out.println("被创建之后装配之后      后处理操作    最后一个修改");
		}
		//通过bean的类型
		if(object instanceof PersonServiceBean){
			System.out.println("只有类型是PersonServiceBean的才会输出这句话");
		}	
		return object;
	}
	//初始化bean之前完成的一些操作
	@Override
	public Object postProcessBeforeInitialization(Object object, String beanName)
			throws BeansException {
		if(object instanceof PersonServiceBean){
			System.out.println("***************");
			System.out.println("=======================================before");
			System.out.println("被创建之后装配之后      后处理操作    第一个修改");
		}
		return object;
	}
二、对bean工厂进行后处理
BeanFactoryPostProcessor在bean工厂载入所有bean的定义后,实例化bean之前,对bean工程做一些后处理工作
示例:
public class StudentServiceBean implements BeanFactoryPostProcessor{
	@Override
	public void postProcessBeanFactory(ConfigurableListableBeanFactory arg0)
			throws BeansException {
		// TODO Auto-generated method stub
		//在这里处理bean操作
		arg0.addBeanPostProcessor(new BeanPostProcessor() {
			@Override
			public Object postProcessBeforeInitialization(Object arg0, String arg1)
					throws BeansException {
				// TODO Auto-generated method stub
				System.out.println("被创建之后装配之后      后处理操作    第一个修改");
				return arg0;
			}
			@Override
			public Object postProcessAfterInitialization(Object arg0, String arg1)
					throws BeansException {
				// TODO Auto-generated method stub
				System.out.println("被创建之后装配之后      后处理操作    最后一个修改");
				return arg0;
			}
		});
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值