转:
事务的传播特<tx:advice id="txadvice" transaction-manager="transactionManager">
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 读取操作 -->
<tx:method name="load*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/>
<tx:method name="get*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/>
<tx:method name="find*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/>
</tx:attributes>
</tx:advice>
spring中PROPAGATION类的事务属性详解
-
PROPAGATION_REQUIRED: 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
-
PROPAGATION_SUPPORTS: 支持当前事务,如果当前没有事务,就以非事务方式执行。
-
PROPAGATION_MANDATORY: 支持当前事务,如果当前没有事务,就抛出异常。
-
PROPAGATION_REQUIRES_NEW: 新建事务,如果当前存在事务,把当前事务挂起。
-
PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
-
PROPAGATION_NEVER: 以非事务方式执行,如果当前存在事务,则抛出异常。
-
PROPAGATION_NESTED: 支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。
<tx:method/>
有关的设置
属性 | 是否需要? | 默认值 | 描述 |
---|---|---|---|
name |
是 |
与事务属性关联的方法名。通配符(*)可以用来指定一批关联到相同的事务属性的方法。如: |
|
propagation |
不 | REQUIRED | 事务传播行为 |
isolation |
不 | DEFAULT | 事务隔离级别 |
timeout |
不 | -1 | 事务超时的时间(以秒为单位) |
read-only |
不 | false | 事务是否只读? |
rollback-for |
不 |
将被触发进行回滚的 |
|
no-rollback-for |
不 |
不 被触发进行回滚的 |