特殊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;
}
});
}
}
使用spring的特殊bean
最新推荐文章于 2024-10-18 11:53:17 发布