标签:事务 调用 对象 intern 秒杀 关于 exposeProxy toString proxy
intern
锁对象 toString 后返回的是不同的 String 对象,需要用 intern 方法直接从常量池中调用字符串对象
synchronized (userId.toString().intern())
proxy
使用 @Transaction 注解开启事务,spring 创建代理对象实现事务,但是在 service 中调用方法都是本身 this 调用,需要得到当前的代理对象调用方法。
IVoucherOrderService proxy = (IVoucherOrderService) AopContext.currentProxy();
return proxy.creatVoucherOrder(voucherId);
还需要添加 AspectJ 依赖
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
在启动类上添加 @EnableAspectJAutoProxy 注解,并将其属性 exposeProxy 改为 true,对外暴露代理对象,可以显示调用。
@EnableAspectJAutoProxy(exposeProxy = true)
标签:事务,调用,对象,intern,秒杀,关于,exposeProxy,toString,proxy 来源: https://www.cnblogs.com/xy7112/p/16441336.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。