Spring后置处理器BeanPostProcessor的使用

BeanPostProcessor:

如果我们想在SpringIOC容器完成初始化之前和初始化之后完成逻辑性质的单个或多个处理,就可以实现BeanPostProcess接口,并将其注册到Spring的IOC容器中,即可使用。


先写一个简单的Spring要实例化的对象,并将其注册到IOC容器中。


@Service
public class BalenceService implements Runnable{

private Map<String, Object> balence;

@Override
public void run() {
balence = new HashMap<String, Object>();
int i = 0;
while(true) {
i++;
balence.put(String.valueOf(i), UUID.randomUUID());
System.out.println(String.valueOf(i) + ":" + balence.get(String.valueOf(i)));
}
}
}


再实现一个BeanPostProcessor的对象,并注册到IOC


@Service
public class BeanPostProcessFactory implements BeanPostProcessor{

private Map<String, Runnable> map = new ConcurrentHashMap<>();

@Override
public Object postProcessAfterInitialization(Object arg0, String arg1) throws BeansException {
System.out.println("返回bean:After" + arg1 + " : " + arg0.getClass().getName());
if(arg0 instanceof Runnable) {//逻辑处理
System.out.println("放入map里");
map.put(arg1, (Runnable) arg0);
}
return arg0;
}

@Override
public Object postProcessBeforeInitialization(Object arg0, String arg1) throws BeansException {
System.out.println("返回bean:Before" + arg1 + " : " + arg0.getClass().getName());
return arg0;
}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值