spring对事务的控制 AOP

来源:互联网 发布:短文本相似算法 编辑:程序博客网 时间:2024/04/29 17:48

我解释一下(* com.evan.crm.service.*.*(..))中几个通配符的含义: 
|第一个 * —— 通配 任意返回值类型| 
|第二个 * —— 通配 包com.evan.crm.service下的任意class| 
|第三个 * —— 通配 包com.evan.crm.service下的任意class的任意方法| 
|第四个 .. —— 通配 方法可以有0个或多个参数|

包com.evan.crm.service下的任意class的具有任意返回值类型、任意数目参数和任意名称的方法 
"execution(* cn..chapter9.service..*.*(..))"表示拦截cn包及子包下的chapter9. service包及子包下的任何类的任何方法;

" execution(* *..mo..*.*(..))"表示拦截所有包及其子包下的mo包及子包下的任意类的任意方法

<tx:advice/>

  • <tx:advice>:id用于指定此通知的名字, transaction-manager用于指定事务管理器,默认的事务管理器名字为“transactionManager”;
  • <tx:method>:用于定义事务属性即相关联的方法名;

name:定义与事务属性相关联的方法名,将对匹配的方法应用定义的事务属性,可以使用“*”通配符来匹配一组或所有方法,如“save*”将匹配以save开头的方法,而“*”将匹配所有方法;

propagation:事务传播行为定义,默认为“REQUIRED”,表示Required,其值可以通过TransactionDefinition的静态传播行为变量的“PROPAGATION_”后边部分指定,如“TransactionDefinition.PROPAGATION_REQUIRED”可以使用“REQUIRED”指定;

isolation:事务隔离级别定义;默认为“DEFAULT”,其值可以通过TransactionDefinition的静态隔离级别变量的“ISOLATION_”后边部分指定,如“TransactionDefinition. ISOLATION_DEFAULT”可以使用“DEFAULT”指定:

timeout:事务超时时间设置,单位为秒,默认-1,表示事务超时将依赖于底层事务系统;

read-only:事务只读设置,默认为false,表示不是只读;

rollback-for:需要触发回滚的异常定义,以“,”分割,默认任何RuntimeException 将导致事务回滚,而任何Checked Exception 将不导致事务回滚;异常名字定义和TransactionProxyFactoryBean中含义一样

no-rollback-for:不被触发进行回滚的 Exception(s);以“,”分割;异常名字定义和TransactionProxyFactoryBean中含义一样;

0 0
原创粉丝点击