/*spring事务管理注解:@Transactional位置:业务(service)层的方法上、类上、接口上作用:将当前方法交给spring进行事务管理,方法执行前,开启事务:成功执行完毕,提交事务:出现常,回滚事务需要在配置文件是加上开启spring事务yml文件格式# 开启事务管理日志 logging:level:org.springframework.jdbc.support.dbcTransactionManager: debug@Transactional()表示开启事务这个方法要么全部成功要么全部失败*//*默认情况下Transactional在捕获运行时期异常要想捕获全部异常还需要设置rollbackFor = Exception.class*//*1.事务传播行为:指的就是当一个事务方法被另一个事务方法调用时,REQUIRED【默认值】需要事务,有则加入,无则创建新事务,意思就是事务嵌套了和上级事务共用一个事务REQUIRES NEW 需要新事务,无论有无,总是创建新事务,意思就是事务嵌套了和单独创建新事务共用一个事务独立执行* */@Transactional(rollbackFor = Exception.class)@Overridepublic void delesc(Integer id) throws Exception {try {jieshou.deletesc(id);int k = 1/0;if (true){throw new Exception();}remover.deleteremover(id);} finally {shijibo.Logclass("本次删除的"+ id);}}
//-----------------------------------------------------------------------------------
package com.example.tlias.longremark; import com.example.tlias.mapperclass.logdiary; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime;/*propagation = Propagation.REQUIRES_NEW表示开启了一个新的事务当前事务执行才会 去执行上面一级嵌套的事务*/ @Transactional(propagation = Propagation.REQUIRES_NEW) //spring日志注解 @Slf4j @Component public class remarklog {@Autowired public logdiary shizhi;public void Logclass(String remark){shizhi.logg(LocalDateTime.now(),remark);}}