您的位置:首页 > 编程语言 > Java开发

spring后处理bean,BeanPostProcessor

2017-03-10 09:26 351 查看
spring 提供一种机制,只要实现此接口BeanPostProcessor,并将实现类提供给spring容器,spring容器将自动执行,在初始化方法前执行before(),在初始化方法后执行after() 。 配置

<bean class="">


public class MyBeanPostProcessor implements BeanPostProcessor {

@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("前方法 : " + beanName);
return bean;
}

@Override
public Object postProcessAfterInitialization(final Object bean, String beanName) throws BeansException {
System.out.println("后方法 : " + beanName);
// bean 目标对象
// 生成 jdk 代理
return Proxy.newProxyInstance(
MyBeanPostProcessor.class.getClassLoader(),
bean.getClass().getInterfaces(),
new InvocationHandler(){
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

System.out.println("------开启事务");

//执行目标方法
Object obj = method.invoke(bean, args);

System.out.println("------提交事务");
return obj;
}});
}
}


配置

<!-- 将后处理的实现类注册给spring -->
<bean class="MyBeanPostProcessor"></bean>


后处理bean作用于所有bean

通过参数2beanname进行控制可作用于一个bean
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: