@Transactional(propagation = Propagation.REQUIRES_NEW)是不能生效的

来源:12-27 交易模型管理--交易下单02

用户1148976

2019-06-29

generateOrderNo()方法上的@Transactional(propagation = Propagation.REQUIRES_NEW)是不能生效的,原因:
1.generateOrderNo()方法是private的
2.generateOrderNo()方法是在createOrder()方法中直接调用的,而不是通过动态代理或者CGLIB的代理类调用的。
最简单最快的解决方法是在OrderServiceImpl中注入自身,用

orderModel.setId(orderService.generateOrderNo());

来调用,这样才能使@Transactional(propagation = Propagation.REQUIRES_NEW)生效。

写回答

2回答

龙虾三少

2019-06-30

正解 感谢同学反馈

0
2
源细胞
回复
用户1148976
用this.来调用是不是也可以?
2020-01-17
共2条回复

南下的风

2019-07-03

通过动态代理就可以生效是什么原理?

0
0

聚焦Java性能优化 打造亿级流量秒杀系统(赠秒杀项目)

理解高流量电商网站性能构建思路 用高逼格技术解决性能提升问题

2174 学习 · 1009 问题

查看课程