spring對事務的控制 AOP

我解釋一下(* 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中含義一樣;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章