spring boot框架可以基于@Transactional 注解的方式实现声明式事务管理。具体实现为在方法开始时创建一个事务,并根据执行情况选择是否回滚事务
用例:
public class Transactional {
@org.springframework.transaction.annotation.Transactional
@Test
public void Test(){
System.out.println("回滚前");
int i=1/0;
System.out.println("回滚后");
}
}
输出:
回滚前
java.lang.ArithmeticException: / by zero报错
注意:
java.lang.ArithmeticException是Java中的一个运行时异常类,它继承自java.lang.RuntimeException类。而Transactional事务回滚操作默认在遇到运行时异常(RuntimeException)时进行回滚操作,即在异常之前进行的修改会撤回。
若要改变回滚条件为全部异常,可以加入@Transactional(rollbackFor = Exception.class),用rollbackFor来指定何时回滚。
若遇到事务嵌套复杂情形来创建事务时,可以对子事务用@Transactional(propagation = Propagation.NEVER),用propagation属性来修饰事务。
REQUIRED:默认,需要事务,已有事务则加入,没有则创建新事务。
REQUIRES_NEW 需要新事物,总是创建新的事务
SUPPORTS 有则加入,没有则不创建事务。
NOT_SUPPORTED 在无事务情况下运行,否则挂起当前事务。
MANDATORY 必须有事务,否则抛出异常。
NEVER 必须无事务,否则抛出异常
浙公网安备 33010602011771号