Spring的@Transactional发生任何异常都会回滚事务?
根据官方文档
可以发现,并不是只要出现了异常就会回滚,只有当发生的异常是「RuntimeException类型」(注意是类型,
xxxException instanceof RuntimeException
)为true的时候才会rollback。可以通过rollbackFor=“xxx”设置特定的回滚策略。
根据官方文档和源码提示,可以设置发生特定异常时不回滚:
除了「InstrumnetNotFoundException」异常之外,其他所有的「Exception」和「Error」都回滚事务。