本节总结了你可以通过使用 <tx:advice/>标签指定的各种事务性设置。默认的 <tx:advice/>设置是:

    • 传播设置是 REQUIRED。
    • 隔离级别是 DEFAULT。
    • 事务是读-写的。
    • 事务超时默认为底层事务系统的默认超时,如果不支持超时,则为无。
    • 任何 RuntimeException 都会触发回滚,而任何已检查的 Exception 都不会( 任何不是 RuntimeException 或 Error 的子类的 Throwable 子类都被视为已检查异常。)

    你可以改变这些默认设置。下表总结了嵌套在 <tx:advice/><tx:attribute/>标签中的 <tx:method/>标签的各种属性:

    Attribute / 属性 Required? / 是否必须 Default / 默认值 Description / 描述
    name Yes 事务属性要与之相关联的方法名称。通配符(*)可以用来将相同的事务属性设置与许多方法联系起来(例如,get*handle*on*Event,等等)。
    propagation No REQUIRED 事务传播行为。
    isolation No DEFAULT 事务隔离级别。只适用于传播设置为 REQUIRED 或REQUIRES_NEW 的情况。
    timeout No -1 事务超时(秒)。只适用于传播 REQUIRED 或REQUIRES_NEW。
    read-only No false 读写事务与只读事务。只适用于 REQUIRED 或 REQUIRES_NEW。
    rollback-for No 以逗号分隔的触发回滚的 Exception 实例的列表。例如,com.foo.MyBusinessException,ServletException
    no-rollback-for No 以逗号分隔的不触发回滚的 Exception 实例列表。例如,com.foo.MyBusinessException,ServletException