在我们项目中有事物失效的情况
在一个没用开启事物的方法中调用另外一个开启了事物的方法,在调用createVoucherOrder方法的时候是通过this去调用的,并不是通过代理对象调用,所以事物失效,此时我们应该是通过代理对象来调用
该如何做呢
添加maven依赖
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
在启动类里面添加一个注解@EnableAspectJAutoProxy(exposeProxy = true),开启adpectj代理
@EnableAspectJAutoProxy(exposeProxy = true)
@MapperScan("com.hmdp.mapper")
@SpringBootApplication
public class HmDianPingApplication {
public static void main(String[] args) {
SpringApplication.run(HmDianPingApplication.class, args);
}
}
如此事物生效了