真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

淺談Spring的兩種事務(wù)定義方式

一、聲明式

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、宜黃網(wǎng)站維護(hù)、網(wǎng)站推廣。

這種方法不需要對原有的業(yè)務(wù)做任何修改,通過在XML文件中定義需要攔截方法的匹配即可完成配置,要求是,業(yè)務(wù)處理中的方法的命名要有規(guī)律,比如setXxx,xxxUpdate等等。詳細(xì)配置如下:

 
   
  
  
  
  
   
   
    
    
    
    
   
  
  
  
  
   
   
   
   
  

二、注解式

這種方法,只需要在Spring配置文件中定義一個事務(wù)管理對象(如DataSourceTransactionManager),然后加入節(jié)點(diǎn),引用該事務(wù)管理對象,然后即可在需要進(jìn)行事務(wù)處理的類和方法使用@Transactional進(jìn)行標(biāo)注。示例如下:

 
   
  
  
  

三、

Spring提供的用于開啟對注解事務(wù)管理的支持,從而能識別Bean類上的@Transactional注解元數(shù)據(jù),其具有以下屬性:

1、

transaction-manager:指定事務(wù)管理器名字,默認(rèn)為transactionManager,當(dāng)使用其他名字時需要明確指定;

proxy-target-class:表示將使用的代碼機(jī)制,默認(rèn)false表示使用JDK代理,如果為true將使用CGLIB代理

order:定義事務(wù)通知順序,默認(rèn)Ordered.LOWEST_PRECEDENCE,表示將順序決定權(quán)交給AOP來處理。

2、@Transaction

Spring使用@Transaction來指定事務(wù)屬性,可以在接口、類或方法上指定,如果類和方法上都指定了@Transaction,則方法上的事務(wù)屬性被優(yōu)先使用,具體屬性如下:

value:指定事務(wù)管理器名字,默認(rèn)使用指定的事務(wù)管理器,用于支持多事務(wù)管理器環(huán)境;

propagation:指定事務(wù)傳播行為,默認(rèn)為Required,使用Propagation.REQUIRED指定;

isolation:指定事務(wù)隔離級別,默認(rèn)為“DEFAULT”,使用Isolation.DEFAULT指定;

readOnly:指定事務(wù)是否只讀,默認(rèn)false表示事務(wù)非只讀;

timeout:指定事務(wù)超時時間,以秒為單位,默認(rèn)-1表示事務(wù)超時將依賴于底層事務(wù)系統(tǒng);

rollbackFor:指定一組異常類,遇到該類異常將回滾事務(wù);

rollbackForClassname:指定一組異常類名字,其含義與中的rollback-for屬性語義完全一樣;

noRollbackFor:指定一組異常類,即使遇到該類異常也將提交事務(wù),即不回滾事務(wù);

noRollbackForClassname:指定一組異常類名字,其含義與中的no-rollback-for屬性語義完全一樣;

Spring提供的@Transaction注解事務(wù)管理內(nèi)部同樣利用環(huán)繞通知TransactionInterceptor實(shí)現(xiàn)事務(wù)的開啟及關(guān)閉。

使用@Transactional注解事務(wù)管理需要特別注意以下幾點(diǎn):

如果在接口、實(shí)現(xiàn)類或方法上都指定了@Transactional 注解,則優(yōu)先級順序?yàn)榉椒?實(shí)現(xiàn)類>接口;

建議只在實(shí)現(xiàn)類或?qū)崿F(xiàn)類的方法上使用@Transactional,而不要在接口上使用,這是因?yàn)槿绻褂肑DK代理機(jī)制是沒問題,因?yàn)槠涫褂没诮涌诘拇?;而使用使用CGLIB代理機(jī)制時就會遇到問題,因?yàn)槠涫褂没陬惖拇矶皇墙涌?,這是因?yàn)榻涌谏系腀Transactional注解是“不能繼承的”;

在Spring代理機(jī)制下(不管是JDK動態(tài)代理還是CGLIB代理),“自我調(diào)用”同樣不會應(yīng)用相應(yīng)的事務(wù)屬性,其語義和中一樣;

默認(rèn)只對RuntimeException異?;貪L;

在使用Spring代理時,默認(rèn)只有在public可見度的方法的@Transactional 注解才是有效的,其它可見度(protected、private、包可見)的方法上即使有@Transactional 注解也不會應(yīng)用這些事務(wù)屬性的,Spring也不會報錯,如果你非要使用非公共方法注解事務(wù)管理的話,可考慮使用AspectJ。

以上這篇淺談Spring的兩種事務(wù)定義方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持創(chuàng)新互聯(lián)。


網(wǎng)頁名稱:淺談Spring的兩種事務(wù)定義方式
網(wǎng)頁URL:http://weahome.cn/article/pcoeeo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部