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

正文內(nèi)容

全面分析spring的編程式事務管理及聲明式事務管理(參考版)

2025-06-19 21:22本頁面
  

【正文】 。 基于 Transactional 的方式將聲明式事務管理簡化到了極致。 基于 TransactionProxyFactoryBean 的聲明式事務是上中方式的改進版本,簡化的配置文件的書寫,這是 Spring 早期推薦的聲明式事務管理方式,但是在 Spring 中已經(jīng)不推薦了。 基于 TransactionTemplate 的編程式事務管理是對上一種方式的封裝,使得編碼更簡單、清晰。結(jié)束語本教程的知識點大致總結(jié)如下:如果不是對遺留代碼進行維護,則不建議再使用基于 TransactionInterceptor 以及基于TransactionProxyFactoryBean 的聲明式事務管理方式,但是,學習這兩種方式非常有利于對底層實現(xiàn)的理解。另一方面,基于 Transactional 的方式使用起來非常簡單明了,沒有學習成本?;?tx 的方式,其優(yōu)點是與切點表達式結(jié)合,功能強大。如果你在 protected、private 或者默認可見性的方法上使用 Transactional 注解,這將被忽略,也不會拋出任何異常。雖然 Transactional 注解可以作用于接口、接口方法、類以及類方法上,但是 Spring 小組建議不要在接口或者接口方法上使用該注解,因為這只有在使用基于接口的代理時它才會生效。如清單12所示:清單12. 基于 Transactional 的事務管理示例配置文件Transactional(propagation = )public boolean transfer(Long fromId, Long toId, double amount) {return (fromId, toId, amount)。Transactional 可以作用于接口、接口方法、類以及類方法上。另外,如果配置的事務管理器 Bean 的名字取值為“transactionManager”,則我們可以省略 tx:advice 的 transactionmanager 屬性,因為該屬性的默認值即為“transactionManager”。另外,得益于 aop 命名空間的切點表達式支持,聲明式事務也變得更加強大?;?tx 命名空間的聲明式事務管理前面兩種聲明式事務配置方式奠定了 Spring 聲明式事務管理的基石。相信在早期使用 Spring 的開發(fā)人員對這種配置聲明式事務的方式一定非常熟悉。如清單9所示:清單9. 基于 TransactionProxyFactoryBean 的事務管理示例配置文件beans............bean id=bankServiceTargetclass=property name=bankDao ref=bankDao//beanbean id=bankServiceclass=property name=target ref=bankServiceTarget/property name=transactionManager ref=transactionManager/property name=transactionAttributespropsprop key=transferPROPAGATION_REQUIRED/prop/props/property/bean....../beans如此一來,配置文件與先前相比簡化了很多。我們必須針對每一個目標對象配置一個 ProxyFactoryBean;另外,雖然可以通過父子 Bean 的方式來復用 TransactionInterceptor 的配置,但是實際的復用幾率也不高;這樣,加上目標對象本身,每一個業(yè)務類可能需要對應三個 bean/ 配置,隨著業(yè)務類的增多,配置文件將會變得越來越龐大,管理配置文件又成了問題。我們沒有對業(yè)務代碼進行任何操作,所有設置均在配置文件中完成,這就是聲明式事務的最大優(yōu)點。通過 ProxyFactoryBean 生成的代理類就是織入了事務管理邏輯后的目標類。配置好了 TransactionInterceptor,我們還需要配置一個 ProxyFactoryBean 來組裝 target 和advice。除此之外,其他的屬性均使用默認值。這里沒有指定readOnly,表示事務不是只讀的。異常的名字可以是類名的全部或者部分,比如“RuntimeException”、“tion”等等。 導致回滾的異常是指,當事務中拋出這些類型的異常時,事務將回滾。異常的名字可以是類名的一部分。 不影響提交的異常是指,即使事務中拋出了這些類型的異常,事務任然正常提交。否則我們不需要設置該屬性。 隔離級別的取值必須以“ISOLATION_”開頭,具體包括:ISOLATION_DEFAULT、ISOLATION_READ_COMMITTED、ISOLATION_READ_UNCOMMITTED、ISOLATION_REPEATABLE_READ、ISOLATION_SERIALIZABLE,共五種取值。 傳播行為是唯一必須設置的屬性,其他都可以忽略,Spring為我們提供了合理的默認值。指定事務屬性的取值有較復雜的規(guī)則,這在 Spring 中算得上是一件讓人頭疼的事?;?TransactionInter... 的聲明式事務管理最初,Spring 提供了 TransactionInterceptor 類來實施聲明式事務管理功能。但是即便有這樣的需求,也存在很多變通的方法,比如,可以將需要進行事務管理的代碼塊獨立為方法等等。通常情況下,筆者強烈建議在開發(fā)中使用聲明式事務,不僅因為其簡單,更主要是因為這樣使得純業(yè)務代碼不被污染,極大方便后期的代碼維護。聲明式事務管理曾經(jīng)是 EJB 引以為傲的一個亮點,如今 Spring 讓 POJO 在事務管理方面也擁有了和 EJB 一樣的待遇,讓開發(fā)人員在 EJB 容器之外也用上了強大的聲明式事務管理功能,這主要得益于 Spring 依賴注入容器和 Spring AOP 的支持。因為事務管理本身就是一個典型的橫切邏輯,正是 AOP 的用武之地。其本質(zhì)是對方法前后進行攔截,然后在目標方法開始之前創(chuàng)建或者加入一個事務,在執(zhí)行完目標方法之后根據(jù)執(zhí)行情況提交或者回滾事務。當然,對于不需要返回值的情況,我們?nèi)匀豢梢允褂?TransactionCallback 接口,并在方法中返回任意值即可。根據(jù)默認規(guī)則,如果在執(zhí)行回調(diào)方法的過程中拋出了未檢查異常,() 方法,則回滾事務;如果事務執(zhí)行完成或者拋出了 checked 類型的異常,則提交事務。這里可以使用默認的事務提交和回滾規(guī)則,這樣在業(yè)務代碼中就不需要顯式調(diào)用任何事務管理的 API。}})。(Transfer Error!)。} catch (Exception e) {()。......
點擊復制文檔內(nèi)容
醫(yī)療健康相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1