欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Spring聲明式事務(wù)策略-Spring-Java -JavaEye做最棒的軟件開(kāi)發(fā)交流社區







Spring中進(jìn)行事務(wù)管理的通常方式是利用AOP(面向切片編程)的方式,為普通java類(lèi)封裝事務(wù)控制,它是通過(guò)動(dòng)態(tài)代理實(shí)現的,由于接口是延 遲實(shí)例化的,spring在這段時(shí)間內通過(guò)攔截器,加載事務(wù)切片。原理就是這樣,具體細節請參考jdk中有關(guān)動(dòng)態(tài)代理的文檔。本文主要講解如何在 spring中進(jìn)行事務(wù)控制。
動(dòng)態(tài)代理的一個(gè)重要特征是,它是針對接口的,所以我們的dao要通過(guò)動(dòng)態(tài)代理來(lái)讓spring接管事務(wù),就必須在dao前面抽象出一個(gè)接口,當然如果沒(méi)有這樣的接口,那么spring會(huì )使用CGLIB來(lái)解決問(wèn)題,但這不是spring推薦的方式,所以不做討論.

大多數Spring用戶(hù)選擇聲明式事務(wù)管理。這是最少影響應用代碼的選擇, 因而這是和非侵入性的輕量級容器的觀(guān)念是一致的。

從考慮EJB CMT和Spring聲明式事務(wù)管理的相似以及不同之處出發(fā)是很有益的。 它們的基本方法是相似的:都可以指定事務(wù)管理到單獨的方法;如果需要可以在事務(wù)上 下文調用setRollbackOnly()方法。不同之處如下:

  • 不象EJB CMT綁定在JTA上,Spring聲明式事務(wù)管理可以在任何環(huán)境下使用。 只需更改配置文件,它就可以和JDBC、JDO、Hibernate或其他的事務(wù)機制一起工作

  • Spring可以使聲明式事務(wù)管理應用到普通Java對象,不僅僅是特殊的類(lèi),如EJB

  • Spring提供聲明式回滾規則:EJB沒(méi)有對應的特性, 我們將在下面討論這個(gè)特性?;貪L可以聲明式控制,不僅僅是編程式的

  • Spring允許你通過(guò)AOP定制事務(wù)行為。例如,如果需要,你可以在事務(wù) 回滾中插入定制的行為。你也可以增加任意的通知,就象事務(wù)通知一樣。使用 EJB CMT,除了使用setRollbackOnly(),你沒(méi)有辦法能 夠影響容器的事務(wù)管理

  • Spring不提供高端應用服務(wù)器提供的跨越遠程調用的事務(wù)上下文傳播。如 果你需要這些特性,我們推薦你使用EJB。然而,不要輕易使用這些特性。通常我 們并不希望事務(wù)跨越遠程調用

回滾規則的概念是很重要的:它們使得我們可以指定哪些異常應該發(fā)起自 動(dòng)回滾。我們在配置文件中,而不是Java代碼中,以聲明的方式指定。因此,雖然我們仍 然可以編程調用TransactionStatus對象的 setRollbackOnly()方法來(lái)回滾當前事務(wù),多數時(shí)候我們可以 指定規則,如MyApplicationException應該導致回滾。 這有顯著(zhù)的優(yōu)點(diǎn),業(yè)務(wù)對象不需要依賴(lài)事務(wù)基礎設施。例如,它們通常不需要引 入任何Spring API,事務(wù)或其他任何東西。

EJB的默認行為是遇到系統異常(通常是運行時(shí)異常), EJB容器自動(dòng)回滾事務(wù)。EJB CMT遇到應用程序異常 (除了java.rmi.RemoteException外的checked異常)時(shí)不 會(huì )自動(dòng)回滾事務(wù)。雖然Spring聲明式事務(wù)管理沿用EJB的約定(遇到unchecked 異常自動(dòng)回滾事務(wù)),但是這是可以定制的。

按照我們的測試,Spring聲明式事務(wù)管理的性能要勝過(guò)EJB CMT。

通常通過(guò)TransactionProxyFactoryBean設置Spring事務(wù)代理。我們需 要一個(gè)目標對象包裝在事務(wù)代理中。這個(gè)目標對象一般是一個(gè)普通Java對象的bean。當我 們定義TransactionProxyFactoryBean時(shí),必須提供一個(gè)相關(guān)的 PlatformTransactionManager的引用和事務(wù)屬性。 事務(wù)屬性含有上面描述的事務(wù)定義。

                                                                                                                                                                                    PROPAGATION_REQUIRED,-MyCheckedException                                    PROPAGATION_REQUIRED                                    PROPAGATION_REQUIRED,readOnly                                                                                                                                                                                    

事務(wù)代理會(huì )實(shí)現目標對象的接口:這里是id為petStoreTarget的bean。(使用 CGLIB也可以實(shí)現具體類(lèi)的代理。只要設置proxyTargetClass屬性為true就可以。 如果目標對象沒(méi)有實(shí)現任何接口,這將自動(dòng)設置該屬性為true。通常,我們希望面向接口而不是 類(lèi)編程。)使用proxyInterfaces屬性來(lái)限定事務(wù)代理來(lái)代 理指定接口也是可以的(一般來(lái)說(shuō)是個(gè)好想法)。也可以通過(guò)從 org.springframework.aop.framework.ProxyConfig繼承或所有AOP代理工廠(chǎng)共享 的屬性來(lái)定制TransactionProxyFactoryBean的行為。

這里的transactionAttributes屬性定義在 org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource 中的屬性格式來(lái)設置。這個(gè)包括通配符的方法名稱(chēng)映射是很直觀(guān)的。注意 insert*的映射的值包括回滾規則。添加的-MyCheckedException 指定如果方法拋出MyCheckedException或它的子類(lèi),事務(wù)將 會(huì )自動(dòng)回滾??梢杂枚禾柗指舳x多個(gè)回滾規則。-前綴強制回滾,+前綴指定提交(這允許即使拋出unchecked異常時(shí)也可以提交事務(wù),當然你自己要明白自己 在做什么)。

TransactionProxyFactoryBean允許你通過(guò) “preInterceptors”和“postInterceptors”屬性設置“前”或“后”通知來(lái)提供額外的 攔截行為??梢栽O置任意數量的“前”和“后”通知,它們的類(lèi)型可以是 Advisor(可以包含一個(gè)切入點(diǎn)), MethodInterceptor或被當前Spring配置支持的通知類(lèi)型 (例如ThrowAdvice, AfterReturningtAdviceBeforeAdvice, 這些都是默認支持的)。這些通知必須支持實(shí)例共享模式。如果你需要高級AOP特 性來(lái)使用事務(wù),如有狀態(tài)的maxin,那最好使用通用的 org.springframework.aop.framework.ProxyFactoryBean, 而不是TransactionProxyFactoryBean實(shí)用代理創(chuàng )建者。

也可以設置自動(dòng)代理:配置AOP框架,不需要單獨的代理定義類(lèi)就可以生成類(lèi)的 代理。

附A Spring中的所有事務(wù)策略

PROPAGATION_MANDATORY
PROPAGATION_NESTED
PROPAGATION_NEVER
PROPAGATION_NOT_SUPPORTED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED_NEW
PROPAGATION_SUPPORTS

附B Spring中所有的隔離策略:

ISOLATION_DEFAULT
ISOLATION_READ_UNCOMMITED
ISOLATION_COMMITED
ISOLATION_REPEATABLE_READ
ISOLATION_SERIALIZABLE





本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Java的Spring框架中AOP項目的一般配置和部署教程
SpringInAction讀書(shū)筆記
最常見(jiàn)面試題(SSH方面
Spring 說(shuō)明文檔 Chapter 7. 事務(wù)管理
用Spring AOP實(shí)現開(kāi)發(fā)中松散耦合-軟件頻道-Spring-天極網(wǎng)
Spring面試題
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久