博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
@Transacitonal注解不生效之spring中expose-proxy的作用与原理
阅读量:5166 次
发布时间:2019-06-13

本文共 756 字,大约阅读时间需要 2 分钟。

几年前记得整理过,@Transacitonal注解的方法被另外一个方法调用的时候,事务是不生效的。

如果大量代码已经这么写了,这个时候抽取出去不现实,怎么办呢?

答案就是在<aop:aspectj-autoproxy />中设置expose-proxy属性为true暴露代理。如下:

<aop:aspectj-autoproxy expose-proxy=“true”> ,然后使用AopContext.currentProxy()获取当前代理,将this.b()改为((UserService)AopContext.currentProxy()).b(),这样就生效了。完整的例子如下:

public interface UserService{    public void a();    public void a();}public class UserServiceImpl implements UserService{    @Transactional(propagation = Propagation.REQUIRED)    public void a(){        this.b();    }    @Transactional(propagation = Propagation.REQUIRED_NEW)    public void b(){        System.out.println("b has been called");    }}

 对应的spring boot注解为@EnableAspectJAutoProxy(exposeProxy=true)

转载于:https://www.cnblogs.com/zhjh256/p/10116060.html

你可能感兴趣的文章
[RoCE]以太网络特性总览
查看>>
C#拼接SQL中in条件
查看>>
rwkj 1363 正方形 长方形 三角形面积
查看>>
Windows魔法堂:解决“由于启动计算机时出现页面文件配置问题.......”
查看>>
列表和字符串互相转换的应用
查看>>
Ubuntu系统U盘安装以及降内核
查看>>
Unity5.6之前版本VRTK插件基础交互
查看>>
hdu1151有向图的最小顶点覆盖
查看>>
(CCPC-Final 2018)K - Mr. Panda and Kakin
查看>>
HDU 1024 Max Sum Plus Plus
查看>>
深度学习之前馈神经网络(前向传播和误差反向传播)
查看>>
IEnumerable<T>和IQueryable<T>区别
查看>>
mysql sql语句大全
查看>>
【luogu P3381 最小费用最大流】 模板
查看>>
(转)MFC界面风格
查看>>
数据结构与算法:排序+二分查找
查看>>
排 序 算 法
查看>>
迁移ORACLE数据库文件到ASM
查看>>
Centos7 tmux1.6 安装
查看>>
二叉树(三)
查看>>