freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

全面分析spring的編程式事務管理及聲明式事務管理-資料下載頁

2025-06-16 21:22本頁面
  

【正文】 ........bean id=bankService class=property name=bankDao ref=bankDao//beantx:advice id=bankAdvice transactionmanager=transactionManagertx:attributestx:method name=transfer propagation=REQUIRED//tx:attributes/tx:adviceaop:configaop:pointcut id=bankPointcut expression=execution(* *.transfer(..))/aop:advisor adviceref=bankAdvice pointcutref=bankPointcut//aop:config....../beans如果默認的事務屬性就能滿足要求,那么代碼簡化為如清單 11 所示:清單 11. 簡化后的基于 tx 的事務管理示例配置文件beans............bean id=bankServiceclass=property name=bankDao ref=bankDao//beantx:advice id=bankAdvice transactionmanager=transactionManageraop:configaop:pointcut id=bankPointcut expression=execution(**.transfer(..))/aop:advisor adviceref=bankAdvice pointcutref=bankPointcut//aop:config....../beans由于使用了切點表達式,我們就不需要針對每一個業(yè)務類創(chuàng)建一個代理對象了。另外,如果配置的事務管理器 Bean 的名字取值為“transactionManager”,則我們可以省略 tx:advice 的 transactionmanager 屬性,因為該屬性的默認值即為“transactionManager”?;?@Transactional 的聲明式事務管理除了基于命名空間的事務配置方式,Spring 還引入了基于 Annotation 的方式,具體主要涉及@Transactional 標注。@Transactional 可以作用于接口、接口方法、類以及類方法上。當作用于類上時,該類的所有 public 方法將都具有該類型的事務屬性,同時,我們也可以在方法級別使用該標注來覆蓋類級別的定義。如清單12所示:清單12. 基于 @Transactional 的事務管理示例配置文件@Transactional(propagation = )public boolean transfer(Long fromId, Long toId, double amount) {return (fromId, toId, amount)。}Spring 使用 BeanPostProcessor 來處理 Bean 中的標注,因此我們需要在配置文件中作如下聲明來激活該后處理 Bean,如清單13所示:清單13. 啟用后處理Bean的配置tx:annotationdriven transactionmanager=transactionManager/與前面相似,transactionmanager 屬性的默認值是 transactionManager,如果事務管理器 Bean 的名字即為該值,則可以省略該屬性。雖然 @Transactional 注解可以作用于接口、接口方法、類以及類方法上,但是 Spring 小組建議不要在接口或者接口方法上使用該注解,因為這只有在使用基于接口的代理時它才會生效。另外, @Transactional 注解應該只被應用到 public 方法上,這是由 Spring AOP 的本質決定的。如果你在 protected、private 或者默認可見性的方法上使用 @Transactional 注解,這將被忽略,也不會拋出任何異常?;?tx 命名空間和基于 @Transactional 的事務聲明方式各有優(yōu)缺點?;?tx 的方式,其優(yōu)點是與切點表達式結合,功能強大。利用切點表達式,一個配置可以匹配多個方法,而基于 @Transactional 的方式必須在每一個需要使用事務的方法或者類上用 @Transactional 標注,盡管可能大多數(shù)事務的規(guī)則是一致的,但是對 @Transactional 而言,也無法重用,必須逐個指定。另一方面,基于 @Transactional 的方式使用起來非常簡單明了,沒有學習成本。開發(fā)人員可以根據(jù)需要,任選其中一種使用,甚至也可以根據(jù)需要混合使用這兩種方式。如果不是對遺留代碼進行維護,則不建議再使用基于 TransactionInterceptor 以及基于TransactionProxyFactoryBean 的聲明式事務管理方式,但是,學習這兩種方式非常有利于對底層實現(xiàn)的理解。雖然上面共列舉了四種聲明式事務管理方式,但是這樣的劃分只是為了便于理解,其實后臺的實現(xiàn)方式是一樣的,只是用戶使用的方式不同而已。結束語本教程的知識點大致總結如下: 基于 TransactionDefinition、PlatformTransactionManager、TransactionStatus 編程式事務管理是 Spring 提供的最原始的方式,通常我們不會這么寫,但是了解這種方式對理解 Spring 事務管理的本質有很大作用。 基于 TransactionTemplate 的編程式事務管理是對上一種方式的封裝,使得編碼更簡單、清晰。 基于 TransactionInterceptor 的聲明式事務是 Spring 聲明式事務的基礎,通常也不建議使用這種方式,但是與前面一樣,了解這種方式對理解 Spring 聲明式事務有很大作用。 基于 TransactionProxyFactoryBean 的聲明式事務是上中方式的改進版本,簡化的配置文件的書寫,這是 Spring 早期推薦的聲明式事務管理方式,但是在 Spring 中已經不推薦了。 基于 tx 和 aop 命名空間的聲明式事務管理是目前推薦的方式,其最大特點是與 Spring AOP 結合緊密,可以充分利用切點表達式的強大支持,使得管理事務更加靈活。 基于 @Transactional 的方式將聲明式事務管理簡化到了極致。開發(fā)人員只需在配置文件中加上一行啟用相關后處理 Bean 的配置,然后在需要實施事務管理的方法或者類上使用 @Transactional 指定事務規(guī)則即可實現(xiàn)事務管理,而且功能也不必其他方式遜色。
點擊復制文檔內容
醫(yī)療健康相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1