首先在pom文件中添加aspectj的依赖
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
然后在调用已经添加玩事务的方法中获取sping提供给我们的代理对象
synchronized (userId.toString().intern()) {
IVoucherOrderService proxy = (IVoucherOrderService) AopContext.currentProxy(); // 能拿到类对象的代理对象
return proxy.createVoucherOrder(voucherId);
}
这样就可以完美的解决方法内调用导致事务失效的问题了。