1. Spring Boot + Mybatis plus, 事务不生效。
- 问题重现:
@Autowired
private DeviceTypeServiceImpl deviceTypeService;
@Override
@Transactional(rollbackFor = Exception.class)
public void add(DeviceTypeParam param) {
validParam(param); // 这样调用方法, 不会使用事务控制调用的方法.
deviceTypeService.validParam(param); // 必须使用当前类的对象, 去调用才能使此方法事务有效.
}
@Override
@Transactional(rollbackFor = Exception.class)
public void validParam(DeviceTypeParam param) {
if (ToolUtil.isEmpty(param.getParentId())) {
throw new ServiceException(400, "parentId");
}
if (ToolUtil.isEmpty(param.getDeviceTypeName())) {
throw new ServiceException(400, "deviceTypeName");
}
}
- 原理: 因为Spring事务使用的是AOP来做事务的。因此,只是调用方法,无法进入到切面;因此;需要使用对象来调用方法,以此把方法放入切面中。
版权声明:本文为weixin_38608626原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。