Spring中的事务是如何实现的?

候选人

Spring实现事务的本质是利用AOP完成的。它对方法前后进行拦截,在执行方法前开启事务,在执行完目标方法后根据执行情况提交或回滚事务。

  1. Spring中事务失效的场景有哪些?

候选人

在项目中,我遇到过几种导致事务失效的场景:

  1. 如果方法内部捕获并处理了异常,没有将异常抛出,会导致事务失效。因此,处理异常后应该确保异常能够被抛出。

  2. 如果方法抛出检查型异常(checked exception),并且没有在@Transactional注解上配置rollbackFor属性为Exception,那么异常发生时事务可能不会回滚。

  3. 如果事务注解的方法不是公开(public)修饰的,也可能导致事务失效。