1.物理事务与逻辑事务:
-
物理事务:事务性资源实际打开的事务,如数据库的Connection打开的事务。
-
逻辑事务:Spring事务,它为每个事务方法创建一个事务范围。在逻辑事务中,大范围的事务称为外围事务,小范围的事务称为内部事务,外围事务可以包含内部事务,但在逻辑上是互相独立的。每一个逻辑事务范围,都能够单独地决定rollback-only状态。
- 提示:如何处理逻辑事务与物理事务之间的关联关系,Spring通过传播行为来解决。
2.spring的传播规则
传播规则 | 作用 |
---|---|
PROPAGATION_REQUIRED(默认) | 支持当前物理事务,如果当前没有物理事务,就新建一个物理事务。这是最常见的选择 |
PROPAGATION_REQUIRES_NEW | 每次都新建物理事务,如果当前存在物理事务,把当前物理事务挂起 |
PROPAGATION_SUPPORTS | 支持当前物理事务,如果当前没有物理事务,就以非事务方式执行 |
PROPAGATION_NOT_SUPPORTED | 以非事务方式执行操作,如果当前存在事务,就把当前物理事务挂起 |
PROPAGATION_MANDATORY | 支持当前物理事务,如果当前没有事务,就抛出异常 |
PROPAGATION_NEVER | 以非事务方式执行,如果当前存在事务,则抛出异常 |
PROPAGATION_NESTED | 如果当前存在事务,则在当前事务上创建保存点(SavePoint)并开启子事务,子事务与主事务一同提交;如果当前不存在事务,则按REQUIRED属性执行 |
3.Spring AOP的两种代理方式:
- 方式:JDK动态代理(默认)和CGLIB动态代理
- 实现方式:
1、目标对象实现了接口:默认采用JDK动态代理实现AOP,
但可以强制使用CGLIB动态代理实现AOP。
2、目标对象没有实现接口:必须采用CGLIB库。