天天看點

事務專欄

事務用法:

寫一個配置類

@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生成動态代理類,内部方法調用不經過代理類,是以,事務不生效。

繼續閱讀