java面试题:Spring中事务失效的场景有哪些

 情况一:异常捕获处理

原因:事务通知只有捉到了目标抛出的异常,才能进行后续的回滚处理,如果目标自己处理掉异常,事务通知无法知悉。

解决:

在catch快添加 throw new RuntimeException(e)抛出。

情况二:抛出检查异常

spring默认智慧回滚非检查异常

解决;配置rollbackFor属性。

情况三:非public方法导致的事务失效

原因:Sping为方法创建代理,添加事务通知,前提条件都是该方法时public.

情况四:类内方法自调用。

因为没有通过代理调用方法所以失效。

你可能感兴趣的:(java,spring,数据库)