欧美一区二区三区四区五区,人人看人人艹,亚洲一区二区中文,99精品视频99,亚洲精品欧美综合四区,国产三区视频在线观看,日韩在线观看一区二区,久久精品色
     
     
    類 型:
    頻 道:
    關鍵字:
     
     
       位置: 中華職工學習網 >> 職工學習中心 >> 工程技術人員 >> 計算機與應用工程技術人員 >> 正文
     
      標 題:Spring框架的事務管理應用分析
      日 期:2007/6/5  源 自:中華職工學習網 【字體: 字體顏色
     

    在軟件開發中出現過各種各樣的框架,開源軟件的興起,使得各種各樣的框架紛紛出現,例如,Apache組織下就擁有諸多的框架類產品。框架就是一組協同工作的類,它們為特定類型的軟件構筑了一個可重用的設計。然而,傳統的框架使得應用程序組件過分依賴于框架中的類,這種耦合度的提高降低了組件的復用性。Spring框架的出現,使得組件之間更松散的耦合成為了可能。

      Spring框架簡介

      Spring框架是一個2003年2月才出現的開源項目,該開源項目起源自Rod Johnson在2002年末出版的《Expert One-on-One J2EE Design and Development》一書中的基礎性代碼。在該書中,Rod Johnson倡導J2EE實用主義的設計思想,而Spring框架正是這一思想的更全面和具體的實現。Spring框架由一個容器,一個配置和組織組件的框架,和一組內置的為事務、持久化和Web用戶接口提供的服務組成。作為一種輕量級的J2EE框架,Spring提供了一種有效的方式來建立和組織J2EE應用程序。

      1、Spring特性

      IoC(Inversion of Control;控制反轉);又稱DI(Dependency Injection;依賴注入);是面向對象領域新興的編程思想;也是Spring的精髓所在。簡單地說;IoC就是指程序之間的關系由容器來控制;而不是傳統實現中由程序代碼直接操控。這也就是所謂“控制反轉”的概念所在:控制權由應用代碼轉到外部容器,控制權的轉移,也就是所謂的反轉。IoC將控制創建的職責搬進了框架中;并把它從應用代碼脫離開來。當使用Spring的IoC容器時只需指出組件需要的對象,在運行時Spring的IoC容器會根據XML配置數據提供給它。

      Spring IoC,借助于依賴注入設計模式,使得開發者不用理會對象自身的生命周期極其關系,而且能夠改善開發者對模式的使用。對于一個對象的管理不是什么困難,難就難在對整個對象群的管理。依賴注入可以讓容器管理對象,即“Don’t call me, I will call you”。這樣對象本身的生命周期以及對象之間的關系就不再讓開發者費神了。

      Spring AOP,借助于Spring實現攔截器,開發者能夠實現以聲名方式使用企業級服務,比如安全性服務、事務服務。AOP 合理的補充了OOP,借助于Spring AOP,開發者能夠高效的使用J2EE服務。

      Spring服務抽象,借助于各種J2EE API抽象,使得開發者能夠一致地使用J2EE 技術,而不管具體是使用什么J2EE API,借助于Spring服務抽象,使代碼大大減少,滿足“更少代碼,更少BUG”的軟件設計原則。

      Spring IoC+Spring AOP+Spring服務抽象,一起形成Spring,這樣一個有機體,使構建輕量級J2EE成為可能。

      Spring提供的事務管理

      Spring提供的事務管理可以分為兩類:編程式的和聲明式的。編程式的,比較靈活,但是代碼量大,存在重復的代碼比較多;聲明式的比編程式的更靈活方便。

      1、傳統使用JDBC的事務管理

      以往使用JDBC進行數據操作,使用DataSource,從數據源中得到Connection,我們知道數據源是線程安全的,而連接不是線程安全的,所以對每個請求都是從數據源中重新取出一個連接。一般的數據源由容器進行管理,包括連接池。例如TOMCAT,WEBSPHERE,WEBLOGIC等這些J2EE商業容器都提供了這個功能。

      以往的我們使用JDBC在寫代碼時,事務管理可能會是這樣:

    Connection conn = null;
    try{
     conn = DBConnectionFactory.getConnection;
     conn.setAutoCommit(false);
     //do something
     conn.commit(); //commit transcation
    }catch(Exception e){
     conn.rollback();
    }
    finally{
     try{
      conn.close();
     } catch(SQLException se){ //do sth.}
     //close ResultSet,PreparedStatement,Connection
     //notice:Maybe ocurr Exception when u close rs,pstmt,conn
    }

      按照以往的思路來寫代碼,代碼量比較長,而且容易疏忽,忘掉一些try/catch,引發一些異常無法catch,雖然有時候我們會寫DBTool類,來關閉這些資源,并且保證在關閉這些資源時,不向外拋異常,但是這樣做會導致額外的麻煩。

      2、Spring提供的編程式的事務處理

      Spring提供了幾個關于事務處理的類:TransactionDefinition //事務屬性定義

      TranscationStatus //代表了當前的事務,可以提交,回滾。

      PlatformTransactionManager這個是spring提供的用于管理事務的基礎接口,其下有一個實現的抽象類AbstractPlatformTransactionManager,我們使用的事務管理類例如DataSourceTransactionManager等都是這個類的子類。
      我們使用編程式的事務管理流程可能如下:

      (1) 聲明數據源。

      (2) 聲明一個事務管理類,例如:DataSourceTransactionManager,HibernateTransactionManger,JTATransactionManager等

      (3) 在我們的代碼中加入事務處理代碼:

    TransactionDefinition td = new TransactionDefinition();
    TransactionStatus ts = transactionManager.getTransaction(td);
    try{
     //do sth
     transactionManager.commit(ts);
    }catch(Exception e){transactionManager.rollback(ts);}

      使用Spring提供的事務模板TransactionTemplate:

    void add()
    {
     transactionTemplate.execute( new TransactionCallback(){
      pulic Object doInTransaction(TransactionStatus ts)
      { //do sth}
     }
    }

      TransactionTemplate也是為我們省去了部分事務提交、回滾代碼;定義事務模板時,需注入事務管理對象。

      3、Spring聲明式事務處理

      Spring聲明式事務處理也主要使用了IoC,AOP思想,提供了TransactionInterceptor攔截器和常用的代理類TransactionProxyFactoryBean,可以直接對組件進行事務代理。

      使用TransactionInterceptor的步驟:

      (1)定義數據源,事務管理類

      (2)定義事務攔截器,例如:

    <bean id = "transactionInterceptor"
    class="org.springframework.transaction.interceptor.TransactionInterceptor">
    <property name="transactionManager"><ref bean="transactionManager"/></property>
    <property name="transactionAttributeSource">
    <value>
    com.test.UserManager.*r=PROPAGATION_REQUIRED
    </value>
    </property>
    </bean>

      (3)為組件聲明一個代理類:ProxyFactoryBean

    <bean id="userManager" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="proxyInterfaces"><value>com.test.UserManager</value></property>
    <property name="interceptorNames">
    <list>
    <idref local="transactionInterceptor"/>
    </list>
    </property>
    </bean>

      使用TransactionProxyFactoryBean:

    <bean id="userManager"
    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager"><ref bean="transactionManager"/></property>
    <property name="target"><ref local="userManagerTarget"/></property>
    <property name="transactionAttributes">
    <props>
    <prop key="insert*">PROPAGATION_REQUIRED</prop>
    <prop key="update*">PROPAGATION_REQUIRED</prop>
    <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
    </props>
    </property>
    </bean>

      TransactionProxyFactoryBean只是為組件的事務代理,如果我們要給組件添加一些業務方面的驗證等,可以使用TransactionTemplate加攔截器方式,為組件添加多個攔截器,spring AOP中提供了三類Advice,即前增強,后增強,拋出異常時的增強,可以靈活使用。

      結束語

      Spring可以簡單的把普通的java class納入事務管理,聲明性的事務操作起來也很容易。有了Spring之后,聲明性事務不再是EJB獨有,我們不必為了獲得聲明性事務的功能而去忍受EJB帶來的種種不便。Spring還提供了惟一的事務管理抽象,它能夠在各種底層事務管理技術(如JTA或者JDBC)之上提供一個一致的編程模型。

     
    [打印此文][關閉窗口][返回頂部
     
    主站蜘蛛池模板: 一区二区三区欧美在线| 国产一区2区3区| 国产精品一二二区| 97久久国产精品| 国语对白老女人一级hd| 福利视频亚洲一区| 91精品婷婷国产综合久久竹菊| 日韩一级片免费观看 | 91超薄丝袜肉丝一区二区| 国产69精品久久久久999小说| 国产一区二区电影在线观看| 国产日韩欧美另类| 久久久午夜爽爽一区二区三区三州| 久久99精品国产麻豆婷婷| av毛片精品| 国产午夜精品一区二区三区视频| 亚洲精品久久久久999中文字幕| 中文字幕一区二区三区乱码视频| 精品国产一区二区三区久久久久久 | 护士xxxx18一19| 欧美福利三区| 欧美精品日韩| 91久久精品国产91久久性色tv| 日韩一级视频在线| 中文字幕一区二区三区乱码| 色综合欧美亚洲国产| 国产99小视频| 中日韩欧美一级毛片| 窝窝午夜精品一区二区| 亚洲欧美日韩综合在线| 欧美一区二区三区日本| 欧美国产在线看 | 色一情一交一乱一区二区三区| 强制中出し~大桥未久4| 国产性猛交xx乱视频| 亚洲国产精品第一区二区| 精品久久久综合| 久久九九亚洲| 免费观看xxxx9999片| 午夜av电影网| 国产精品久久99| 性欧美一区二区| 午夜wwwww| 99日韩精品视频| 久久激情综合网| 精品一区电影国产| 99久久国产综合| 91一区二区三区在线| 国产原创一区二区| 制服.丝袜.亚洲.另类.中文| 国产一区二区三区小说| 日韩精品久久一区二区| 欧美国产一区二区三区激情无套| 亚洲精品一区在线| 午夜看大片| 九九国产精品视频| 一区二区三区四区视频在线| 国产日韩欧美一区二区在线播放| 久久天天躁夜夜躁狠狠躁2022| 999偷拍精品视频| 狠狠色综合久久丁香婷婷| 四虎国产精品永久在线国在线 | 久久er精品视频| 久久国产这里只有精品| 亚洲国产精品入口| 鲁一鲁一鲁一鲁一鲁一av| 国产一区二区三区四| 亚洲欧美日韩三区| 国产日韩欧美精品一区二区| 国产一区二区精品在线| 久久精品国产精品亚洲红杏| 99久久精品国产系列| 夜夜爱av| 午夜av在线电影| 日韩亚洲精品在线| 亚洲s码欧洲m码在线观看| 国产伦高清一区二区三区| 国产一区激情| 91理论片午午伦夜理片久久 | 欧美3级在线| 国产精品国产亚洲精品看不卡15| 国产精品国精产品一二三区| 日韩av在线播| 欧美在线一级va免费观看| 亚洲一区二区福利视频| 欧洲在线一区二区| 91麻豆精品国产91久久| 日本护士hd高潮护士| 国产一区二区精品在线| 国产一区二区三区黄| 午夜社区在线观看| 欧洲国产一区| 精品久久久久久中文字幕| 日韩精品久久久久久久酒店| 国产一区观看| 视频一区二区国产| 色偷偷一区二区三区| 午夜理伦影院| 欧美资源一区| 丰满岳乱妇在线观看中字| 小萝莉av| 欧美午夜看片在线观看字幕| 久久精品视频中文字幕| 欧美日韩一区二区三区在线播放 | 国产精品一区在线观看你懂的 | 中文字幕一级二级三级| 91精品久| 狠狠色噜噜狠狠狠狠米奇7777| 亚洲欧美日韩国产综合精品二区 | 国产精品免费自拍| 午夜欧美影院| 亚洲国产精品日韩av不卡在线| 一本一道久久a久久精品综合蜜臀| 国内精品国产三级国产99| 国产精品美乳在线观看| 日韩精品一区二区av| 综合久久色| 国产伦理精品一区二区三区观看体验| 岛国黄色av| 色午夜影院| 国产精品久久久区三区天天噜| 夜夜夜夜曰天天天天拍国产| 国产日韩欧美精品一区| 欧美乱妇在线视频播放| 欧美一级久久久| 国产高潮国产高潮久久久91| 国产69精品久久久| 国产精品96久久久久久又黄又硬| 亚洲少妇一区二区三区| 国产一区免费在线观看| 一级久久久| bbbbb女女女女女bbbbb国产| 国产一区在线免费观看| 中文字幕一区一区三区| 国产精品免费自拍| 色综合久久精品| 国产一区二区三区精品在线| 久久福利免费视频| 96精品国产| 欧美日韩亚洲三区| 狠狠色丁香久久婷婷综| 国内揄拍国产精品| 久久精品国产久精国产| 日本精品一区视频| 亚洲国产精品激情综合图片| 欧洲在线一区| 中文字幕一二三四五区| 精品国产91久久久| 日韩av在线播| 亚洲国产欧洲综合997久久,| 在线观看欧美一区二区三区| 日本一区二区免费电影| 国模精品免费看久久久| 高清欧美精品xxxxx在线看| 国产区91| 国产精品伦一区二区三区级视频频| 欧美一区二区在线不卡| 欧美一区二三区| 国产高清在线精品一区二区三区| 精品一区二区三区视频?| 国产精品一区在线播放| 91麻豆精品国产91久久| 免费a级毛片18以上观看精品 | 国产精品久久久久久久久久软件| 精品国产乱码一区二区三区a| 国产在线精品二区| 国产aⅴ一区二区| 色乱码一区二区三在线看| 国产精品伦一区二区三区级视频频 | 久久久久国产亚洲日本| 欧美日韩精品在线一区| 欧美精品第一区| 91精品视频一区二区三区| 国产精品自产拍在线观看桃花| 91看片淫黄大片91| 国产91麻豆视频| 自拍偷在线精品自拍偷写真图片| 亚洲国产欧美一区二区丝袜黑人 | 国产99久久久精品视频| av午夜剧场| 亚洲午夜天堂吃瓜在线| 手机看片国产一区| 国内少妇偷人精品视频免费| 精品三级一区二区| 一区二区三区欧美视频| 国产一区二三| 久久99精品国产99久久6男男| av午夜剧场| 99久久婷婷国产精品综合| 欧美精品一区二区三区四区在线| 91一区二区三区视频| 午夜黄色一级电影| av午夜影院| 日韩精品中文字幕一区二区三区| 国产亚洲欧美日韩电影网| 国产精品白浆一区二区| 99久久国产免费,99久久国产免费大片 | 久久第一区| 国产69精品久久99不卡免费版| 天干天干天干夜夜爽av| 农村妇女精品一区二区| 欧美乱妇在线观看| 亚洲午夜国产一区99re久久| 亚洲欧美国产中文字幕| 九九视频69精品视频秋欲浓 | 色综合久久精品| 国产精品96久久久久久久| 亚洲欧美日韩视频一区| 亚洲精品国产久| 高清欧美精品xxxxx| 国产一区二区视频播放| 香蕉av一区二区三区| 日韩中文字幕在线一区| 一区不卡av| 久久午夜鲁丝片| 午夜社区在线观看| 久久免费视频一区二区| 黑人巨大精品欧美黑寡妇| 国产一区激情| 午夜免费一级片| 亚洲精品国产suv| 99国产精品久久久久99打野战| 久久国产精品广西柳州门| 91婷婷精品国产综合久久| 亚洲美女在线一区| 偷拍自中文字av在线| 亚洲精品一区,精品二区| 国产69精品99久久久久久宅男| 国产精品久久久久久久久久软件| 国产1区在线观看| 91久久精品国产亚洲a∨麻豆| 鲁一鲁一鲁一鲁一鲁一av| 欧美色图视频一区| 国产极品美女高潮无套久久久| 国产精品美女久久久另类人妖| 欧美日韩激情在线| 精品国产鲁一鲁一区二区作者| 久久黄色精品视频| 欧美日韩一区在线视频| 国产一区激情| 色婷婷久久一区二区三区麻豆| 91看片淫黄大片91| 亚洲精品suv精品一区二区| 久久99国产视频| 91超碰caoporm国产香蕉| 亚洲欧美一二三|