相关文档:Spring官方文档
相关代码:github
在Spring官方文档中说到,当Transaction内发生unchecked exception的时候,会自动rollback,但是当Transaction内发生checked exception时,是不会自动rollback的。
注意,这种处理机制和直觉是不同的,初学者甚至有经验的开发人员直觉上会认为只要Transaction内发生异常,都会自动rollback。
其实仔细想想Spring这样处理是有意为之的,因为unchecked exception是一种出乎意料的异常(RuntimeException),这类异常在java语言层面不强制catch,那么出现这种异常的时候spring自然应该自动rollback。
但是checked exception不同,这类异常在java语言层面是强制catch的,也就是说强制调用方对这类异常做处理,所以此时Spring就将处理权转移给了调用方,而不是自动rollback。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。