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中含義一樣;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM