Spring 事务 转
出处: spring事务 1.背景 Spring提供了编程式事务和声明式事务,但由于编程性事务的侵入性,开发中普遍会使用Spring的声明式事务,下文中所说的Spring事务也都是指声明式事务。 Spring声明式事务底层是建立在AOP的基础上的,其本质就是对方法前后进行拦截,然后在目标方法之前创建或加入一个事务,在执行完目标方法之后根据执行执行情况提交或回滚事务。 声明式事务最大的优点就是不需要在业务逻辑代码中掺杂事务管理的代码,Spring事务提供两种事务管理方式:基于注解和基于XML配置,我们只需要简单的配置即可使用。 相比于编程式事务,由于声明式事务是基于AOP实现的,所以只能实现对方法的粗粒度的控制,而无法做到代码块级别的细粒度控制。 Spring事务包括5中参数,分别是:传播行为,隔离级别,是否只读,事务超时时间,回滚规则 本文分析下5种事务参数,然后对具体的传播行为给出Demo,以此给出其“细粒度”的事务实现。 2.Spring事务的5种参数 2.1 传播行为 传播行为定义了关于客户端和被调用方法的事务边界,Spring中定义了7中传播行为。 对嵌套事务的理解: 嵌套是子事务在父事务中执行,子事务是父事务的一部分,在进入子事务之前,父事务建立一个回滚点,叫save point,然后执行子事务,这个子事务也算是父事务的一部分