其他分享
首页 > 其他分享> > 关于秒杀事务相关

关于秒杀事务相关

作者:互联网

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