1.在方法中捕获了异常,那么该方法事务不会回滚。
本类中A方法(有事务注解)调用其他类中B方法(有事务注解,该类在容器中),B方法中捕获了异常,事务失效不可以回滚,在B方法中的catch里进行异常抛出则可以正常回滚。
本类中A方法(有事务注解)调用其他类中B方法(有事务注解,该类在容器中),A方法中捕获了异常,spring事务机制检测到异常,进行回滚。
所以最好在业务层catch中抛出异常让控制层捕获。
2.spring中事务是代理模式,在该类中A方法调用本类中B方法,A方法上没有事务注解,B方法上有事务注解,则B方法中出现异常,B方法事务不会回滚,A方法没有事务注解也不会回滚。
3.A方法如果有事务注解,调用了本类B方法,B方法出现异常也整体可回滚。
4.本类中A方法调用其他类中B方法(有事务注解,该类在容器中),B方法发生异常,可以回滚