Spring中的事务是如何实现的?
候选人:
Spring实现事务的本质是利用AOP完成的。它对方法前后进行拦截,在执行方法前开启事务,在执行完目标方法后根据执行情况提交或回滚事务。
Spring中事务失效的场景有哪些?
候选人:
在项目中,我遇到过几种导致事务失效的场景:
如果方法内部捕获并处理了异常,没有将异常抛出,会导致事务失效。因此,处理异常后应该确保异常能够被抛出。
如果方法抛出检查型异常(checked exception),并且没有在
@Transactional
注解上配置rollbackFor
属性为Exception
,那么异常发生时事务可能不会回滚。如果事务注解的方法不是公开(public)修饰的,也可能导致事务失效。