国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

詳細介紹Spring事務管理

開發 后端
本文詳細介紹Spring事務管理,包括Spring事務管理的兩種方式——編程式和聲明式。

在學習spring事務管理時,我忍不住要問,spring為什么進行事務管理,spring怎么進行的事務管理?首先,為什么要進行事務,接下來說說spring是怎樣進行事務管理的.


Spring事務策略

Spring事務策略,也就是spring事務管理的實現方式.它有一個統一的抽象是由實現下面這個接口完成的.org.springframework.transaction.PlatformTransactionManager
此接口的內容如下:

  1. Public interface PlatformTransactionManager()...{  
  2. TransactionStatue getTransaction(TransactionDefinition definition) throws TransactionException;  
  3. Void commit(TransactionStatus status) throws TransactionException;  
  4. Void rollback(TransactionStatus status) throws TransactionException;  

不管是聲明式的還是編程式的事務管理都需要此抽象來完成.
解釋一下這個接口,這樣可以更好的理解spring的事務控制的原理.
getTransaction() 根據類型為TransactionDefinition的參數返回一個TransactionStatus對象.返回的 TransactionStatus對象可能代表一個新的或已經存在的事務(如果在當前調用堆棧有一個符合條件的事務).如同J2EE事務上下文,一個 TransactionStatus也是和執行的線程關聯的.
同時,在框架中還存在TransactionDefinition接口,即上邊的參數類型.此接口指定了事務隔離程度、事務傳播、事務超時、只讀狀態。
另外,還有TransactionStatus接口。這個接口為處理事務提供簡單的控制事務執行和查詢事務狀態的方法。

兩種Spring事務管理方式:編程式、聲明式。

Spring提供兩種方式的編程式事務管理,分別是:使用TransactionTemplate和直接使用PlatformTransactionManager。

1.TransactionTempale采用和其他Spring模板,如JdbcTempalte和HibernateTemplate一樣的方法。它使用回調方法,把應用程序從處理取得和釋放資源中解脫出來。如同其他模板,TransactionTemplate是線程安全的。代碼片段:

  1. Object result = tt.execute(new TransactionCallback()...{  
  2. public Object doTransaction(TransactionStatus status)...{  
  3. updateOperation();  
  4. return resultOfUpdateOperation();  
  5. }  
  6. }); 

使用TransactionCallback()可以返回一個值。如果使用TransactionCallbackWithoutResult則沒有返回值。

2.也可以使用PlatformTransactionManager直接管理事務。簡單地通過一個bean引用給你的bean傳遞一個你使用的 PlatformTransaction對象。然后,使用TransactionDefinition和TransactionStatus對象就可以發起、回滾、提交事務。如下片段:

  1. DefaultTransactionDefinition defnew DefaultTransactionDefinition(); //new 一個事務              def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); //                                                    初始化事務,參數定義事務的傳播類型; TransactionStatus status =                                   transactionManager.getTransaction(def); //獲得事務狀態 try...{ ……………..                                 transactionManager.commit(status); //提交事務; }catch(…..)...{                                                   transactionManager.rollback(status); //回滾事務; }  

Spring也提供聲明式事務管理。這是通過AOP實現的。大多數Spring用戶選擇聲明式事務管理,這是最少影響應用代碼的選擇,因而這是和非侵入性的輕量級容器的觀念是一致的。

1)通常通過TransactionProxyFactoryBean設置Spring事務代理。需要一個目標對象包裝在事務代理中。這個目標對象一般是一個普通Javabean。當我們定義TransactionProxyFactoryBean時,必須提供一個相關的 PlatformTransactionManager的引用和事務屬性。事務屬性含有事務定義。例如:

  1. <bean id="transactionService"class="org.springframework.                    transaction.interceptor.TransactionProxyFactoryBean"> 
  2. <property name="transactionManager"> 
  3. <ref   local="transactionManager"/> 
  4. property> 
  5. <property  name="target"> 
  6. <ref  local="transactionServiceControl"/> 
  7. property> 
  8. <property  name="transactionAttributes"> 
  9. <props> 
  10. <prop key=”insert*”>PROPAGATION_REQUIRED,-MyCheckedExceptionprop> 
  11. <prop key=”update*”>PROPAGATION_REQUIREDprop> 
  12. <prop key=”*”>PROPAGATION_REQUIRED,readOnlyprop> 
  13. props> 
  14. property> 
  15. bean> 

事務代理會實現目標對象的接口:這里是屬性名是target的引用。id是transactionServiceControl。(使用CGLIB也可以實現具體類的代理。只要設置proxyTargetClass屬性為true即可。如果目標對象沒有實現任何接口,這將自動設置該屬性為true。通常,我們希望面向接口編程。)使用proxyInterfaces屬性來限定事務代理來代理指定接口也是可以。 也可以通過從org.springframework.aop.framework.ProxyConfig繼承或所有AOP代理工廠共享的屬性來定制 TransactionProxyFactoryBean行為。

然后,說說屬性名是transactionAttributes意義:
這里的transactionAttributes屬性是定義在 org.springframework.transaction.interceptor.NameMathTransactionAttributeSource 中的屬性格式設置。這個包括通配符的方法名稱映射是很直觀的,如”insert*”。注意insert*的映射的值包括回滾規則?!? MyCheckException”指定如果方法拋出MyCheckException或它的子類,事務會自動回滾。可以用逗號分隔多個回滾規則。“-” 前綴強制回滾,“+”前綴指定提交(這允許即使拋出unchecked異常時也可以提交事務)?!癙ROPAGATION_REQUIRED”指定事務傳播范圍。

TransactionProxyFactoryBean允許你通過“preInterceptors”和 “postInterceptors”屬性設置前或后的攔截操作。可以設置任意數量的前和后通過,它們的類型可以是Advistor(切入點),MethodInterceptor或被當前Spring配置支持的通知類型。例如:ThrowAdvice,AfterReturningAdvice或BeforeAdvice。這些通知必須支持實例共享模式。如果你需要高級 AOP特性操作事務,通過org.springframework.aop.framework.ProxyFactoryBean,而不是 TransactionProxyFactory實用代理創建者。

2)另一種聲明方式:BeanNameAutoProxyCreator
使用TransactionProxyFactoryBean當事務代理包裝對象,你可以完全控制代理。如果需要用一致方式包裝大量bean。使用一個 BeanFactoryPostProcessor的一個實現,BeanNameAutoProxyCreator,可以提供另外一種方法。(Spring中,一旦ApplicationContext讀完它的初始化信息,它將初始化所有實現BeanPostProcessor接口的 bean,并且讓它們后處理ApplicationContext中所有其他的bean。所以使用這種機制,正確配置的 BeanNameAutoProxyCreator可以用來后處理所有ApplicationContext中所有其他的bean),并且把它們用事務代理包裝起來。真正生成的事務代理和使用TransactionProxyFactoryBean生成的基本一致。

最后,總結一下Spring的優點:
◆為不同的事務API提供一致的編程模型,如JTA、JDBC、Hibernate、iBATIS數據庫層JDO
◆提供比大多數事務API更簡單的、易于使用的編程式事務管理API
◆整合Spring數據訪問抽象
◆支持Spring聲明式事務管理

【編輯推薦】

  1. Spring中XML配置文件的十二個最佳方法(上)
  2. Spring中XML配置文件的十二個最佳方法(下)
  3. 簡化Spring配置文件
  4. 多種Spring.jar詳解
  5. Spring框架的事務管理應用分析
責任編輯:佚名 來源: IT168
相關推薦

2009-06-30 16:57:42

Spring事務管理

2023-10-08 08:28:10

Spring事務管理

2014-08-25 09:12:47

Spring事務管理

2009-06-08 17:56:00

SpringJDBC事務

2023-03-27 10:40:09

2010-03-29 13:34:15

ibmdwSpring

2009-09-25 12:59:53

Hibernate事務

2010-03-23 08:46:40

Spring

2009-02-11 11:14:31

事務管理事務開始Spring

2009-06-17 14:43:47

Spring框架Spring事務管理

2009-02-11 13:08:29

事務提交事務管理Spring

2025-02-08 10:56:18

2009-09-29 09:44:52

Hibernate事務

2009-09-23 17:48:00

Hibernate事務

2025-02-21 08:00:00

事務管理SpringBootJava

2009-06-03 10:20:11

Hibernate事務管理配置

2009-07-17 14:03:34

ibatis DAO事務管理

2025-02-18 13:00:00

SpringBoot事務管理代碼

2023-05-06 07:29:49

Spring事務傳播

2009-06-19 14:49:43

Spring框架
點贊
收藏

51CTO技術棧公眾號

国产91网红主播在线观看| 日韩美女免费视频| 最近2018中文字幕免费在线视频| 久久久久久9| 成人免费视频97| 欧美精品中文字幕亚洲专区| 综合欧美国产视频二区| 婷婷色在线播放| 欧美日免费三级在线| 中文字幕在线资源| 亚洲欧美日韩在线播放| 久久久久久久久久久久久国产精品| 免费人成黄页网站在线一区二区| 黄色99视频| 中文在线播放一区二区| 国产精品第1页| 丝袜久久网站| 国模叶桐国产精品一区| 天堂va欧美ⅴa亚洲va一国产| 爽成人777777婷婷| 国产精品国产三级国产aⅴ浪潮 | 亚洲经典视频在线观看| 91精品国产综合久久久久久蜜臀| 国产一区二区三区站长工具| 国产91免费观看| 忘忧草精品久久久久久久高清| 国产精品一区二区久久久| 视频在线观看免费高清| 国产欧美一区| 成人爽a毛片一区二区免费| 在线色欧美三级视频| 精品国产一区二区三区四区精华| 人妻无码视频一区二区三区 | 亚洲熟妇av一区二区三区漫画| 天堂av一区| 国产精品美女久久久久久久久久久 | 久久久久久网址| 四虎精品在线观看| 欧美成在线观看| 美女亚洲一区| 91在线观看免费高清完整版在线观看| 日韩中文欧美| 国产伦精品一区二区三区高清版| 国产亚洲成人一区| 91精品国产毛片武则天| 久久综合丝袜日本网| 色偷偷亚洲第一综合| 一区二区高清视频在线观看| 水莓100在线视频| 精品久久久久久无| 99精品美女视频在线观看热舞| 欧美精品videosex极品1| 欧美日韩国产免费观看视频| 99se婷婷在线视频观看| 久久国产精品99久久久久久老狼 | 93在线视频精品免费观看| 亚洲影院色无极综合| 在线视频日韩| 中文字幕中文字幕在线中心一区| 成人性生交大片免费看中文| 高清av影院| 日韩女优av电影| 亚洲91网站| 鬼打鬼之黄金道士1992林正英| 免费成人你懂的| 日本19禁啪啪吃奶大尺度| 日韩欧美中文一区| 视频一区国产| 国产一区免费观看| caoporn国产一区二区| 亚洲一本大道| 亚洲黄一区二区| 欧美男gay| 国产91porn| 91极品美女在线| 91成人精品在线| 成人污污视频在线观看| 女人高潮特级毛片| 亚洲国产福利在线| 国产亚洲欧美日韩在线观看一区二区| 色一情一乱一伦一区二区三区丨| 欧美国产欧美综合| 色女人在线视频| 国产精品18久久久久久首页狼| 日韩不卡一区二区| 性感av在线播放| 欧美激情精品久久久久久| 久久99伊人| 头脑特工队2免费完整版在线观看| 中文字幕亚洲无线码a| 五月天久久久| 欧美在线观看www| 欧美一级生活片| 日韩中文在线电影| 狠狠爱免费视频| 91精品国产品国语在线不卡| 日本亚洲不卡| 欧美成人精品免费| 欧美性xxxxxxxx| 视频福利一区| 116极品美女午夜一级| 日韩色在线观看| 亚洲乱码免费伦视频| 欧美精品久久久久久久久25p| 国产视频久久网| 亚洲欧美高清| 国产精品久久一区二区三区不卡 | 曰本三级在线| 99在线观看视频| 女厕盗摄一区二区三区| 高清无码视频直接看| 久久久久国色av免费观看性色| 欧美丝袜自拍制服另类| 精品写真视频在线观看 | 大片在线观看网站免费收看| 亚洲人成人一区二区在线观看| 成人羞羞网站入口免费| 丝袜制服影音先锋| 亚洲欧美制服丝袜| 国产69久久| 久久综合色一本| 99精品黄色片免费大全| 中文字幕第100页| 国产精品美日韩| 日韩中文影院| 4388成人网| 日韩精品社区| 五月婷婷狠狠操| 精品免费国产一区二区三区四区| 欧美专区国产专区| 亚洲成人午夜影院| 欧美极品少妇xxxxⅹ高跟鞋| 国产精品夜夜爽| 国产精品久久夜| 欧美日韩黄色一区二区| 高清一区二区三区四区五区| 国产精品久久久久免费a∨大胸| 亚洲缚视频在线观看| 中文字幕在线观看不卡| 日韩午夜免费视频| 精久久久久久| 同心难改在线观看| 日韩精品你懂的| 国产偷国产偷亚洲高清97cao| 欧美在线视频导航| 国产91成人video| 国产丝袜不卡| 日韩免费av一区二区三区| 日本高清不卡三区| 国产主播在线看| 一道本视频在线观看| 精品国产乱码久久久久| 日韩小视频在线播放| а√最新版地址在线天堂| 黄色污网站在线免费观看| www.成人.com| 在线观看导航| 成人在线观看网站| 日本妇女一区| 久久九九国产精品| 欧美国产精品v| 国内不卡的二区三区中文字幕| 68国产成人综合久久精品| 大胆av不用播放器在线播放| 日本人视频jizz页码69| 动漫一区二区在线| 亚洲素人一区二区| 国产一区二区精品久| 日韩大陆av| 久9re热视频这里只有精品| 国产99精品一区| 国产91沈先生在线播放| 亚洲熟妇av一区二区三区漫画| 欧美成人黑人猛交| 丝袜美腿av在线| 97青娱国产盛宴精品视频| 久久一留热品黄| 日韩精品免费电影| 激情小说网站亚洲综合网| 97视频在线| 日韩中文字幕91| 国内外成人在线视频| 国产色91在线| 国产日韩欧美a| 欧美性猛交一区二区三区精品| 在线观看亚洲精品| 日韩成人av网| 欧美手机在线视频| 久久精品国产精品亚洲| 99三级在线| av网站大全在线| 禁久久精品乱码| 2020日本不卡一区二区视频| 欧美日韩一区二区三区 | 久久久久久久电影| 亚洲精品第一国产综合精品| 国内精品久久久久久| 欧美爱爱视频免费看| 97人人澡人人爽91综合色| 日本午夜精品一区二区三区电影 |