spring注解@Transactional

作用:
@TransactionalSpring提供的声明式事务管理方式,当你的方法中抛出异常时,它会将事务回滚,数据库中的数据将不会改变,也就是回到进入此方法前的状态。
默认规则
Spring默认情况下会对运行时例外或者说不受检查异常(checked)进行事务回滚。
当遇到非运行时抛出的异常,编译器会检查到的异常叫受检查例外或者说受检查异常(checked)就不回滚。
改变默认规则:
1 让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class)
2 让unchecked例外不回滚: @Transactional(notRollbackFor=RunTimeException.class)
设置所有异常回滚
这里写图片描述
设置可以事物的超时时间
这里写图片描述
注意:
@Transactional 可以作用于接口、接口方法、类以及类方法上。当作用于类上时,该类的所有 public 方法将都具有该类型的事务属性,同时,我们也可以在方法级别使用该标注来覆盖类级别的定义。

虽然 @Transactional 注解可以作用于接口、接口方法、类以及类方法上,但是 Spring 建议不要在接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时它才会生效。另外, @Transactional 注解应该只被应用到 public 方法上,这是由 Spring AOP 的本质决定的。如果你在 protected、private 或者默认可见性的方法上使用 @Transactional 注解,这将被忽略,也不会抛出任何异常。

猜你喜欢

转载自blog.csdn.net/gyardbb/article/details/80279652