事務用法:
寫一個配置類
@EnableTransactionManagement
@Configuration
public class TransactionManagementConfig {
}
在需要事物的方法上添加 @Transactional注解即可,
特殊場景:注解也加了為什麼還是不生效,
建議,
1>先确認是什麼異常
2>如果是運作時異常,事務是生效的,如果抛出的是Exception異常
還需要在注解上加上rollbackFor = Exception.class,才可以
/**
* 儲存,id有值時更新,無值時新增
*/
@Transactional(rollbackFor = Exception.class)
public void save(SectionDto sectionDto) {
Section section = CopyUtil.copy(sectionDto, Section.class);
if (StringUtils.isEmpty(sectionDto.getId())) {
this.insert(section);
} else {
this.update(section);
}
courseService.updateTime(sectionDto.getCourseId());
}
同一個類内部方法互相調用,methodA調用methodB,B的事務不起作用,Spring的事務處理利用AOP生成動态代理類,内部方法調用不經過代理類,是以,事務不生效。