事务失效
synchronized (userId.toString().intern()) {
return createVoucherOrder(voucherId);
}
- 这里面调用了一个其他的方法,这个方法需要开启了事务但是这种调用方式会有一定的问题
- 对于为什么会产生问题是因为spring只有取到他的代理对象才能事务处理
- 此时就需要采用其他的方式
synchronized (userId.toString().intern()) {
IVoucherOrderService proxy = (IVoucherOrderService) AopContext.currentProxy();
return proxy.createVoucherOrder(voucherId);
}
- 需要拿到其代理对象进行事务处理
此时需要进行添加依赖
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
并且在启动类上加上注解
@EnableAspectJAutoProxy(exposeProxy = true)
就可以进行事务处理了