qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Spring聲明式事務配置管理方法

           環境配置
            項目使用SSH架構,現在要添加Spring事務管理功能,針對當前環境,只需要添加Spring2.0AOP類庫即可。添加方法:
            點擊項目右鍵->BuildPath->Addlibrarys:
            
            打開AddLibraries對話框,然后選定MyEclipseLibraries:
            點擊Next,找到Spring2.0aopLibraries并勾選上,點擊finsh即可。
            如果在項目里面能看到下面的庫文件,說明已經安裝成功。
            事務配置
            首先在/WEB-INF/applicationContext.xml添加以下內容:
          <!--配置事務管理器-->
          <beanid="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager">
          <propertyname="sessionFactory">
          <refbean="mySessionFactory"/>
          </property>
          </bean>
          注:這是作為公共使用的事務管理器Bean。這個會是事先配置好的,不需各個模塊各自去配。
            下面就開始配置各個模塊所必須的部分,在各自的applicationContext-XXX-beans.xml配置的對于事務管理的詳細信息。
            首先就是配置事務的傳播特性,如下:
          <!--配置事務傳播特性-->
          <tx:adviceid="TestAdvice"transaction-manager="transactionManager">
          <tx:attributes>
          <tx:methodname="save*"propagation="REQUIRED"/>
          <tx:methodname="del*"propagation="REQUIRED"/>
          <tx:methodname="update*"propagation="REQUIRED"/>
          <tx:methodname="add*"propagation="REQUIRED"/>
          <tx:methodname="find*"propagation="REQUIRED"/>
          <tx:methodname="get*"propagation="REQUIRED"/>
          <tx:methodname="apply*"propagation="REQUIRED"/>
          </tx:attributes>
          </tx:advice>
          <!--配置參與事務的類-->
          <aop:config>
          <aop:pointcutid="allTestServiceMethod"expression="execution(*com.test.testAda.test.model.service.*.*(..))"/>
          <aop:advisorpointcut-ref="allTestServiceMethod"advice-ref="TestAdvice"/>
          </aop:config>
            需要注意的地方:
            (1)advice(建議)的命名:由于每個模塊都會有自己的Advice,所以在命名上需要作出規范,初步的構想就是模塊名+Advice(只是一種命名規范)。
            (2)tx:attribute標簽所配置的是作為事務的方法的命名類型。
            如<tx:methodname="save*"propagation="REQUIRED"/>
            其中*為通配符,即代表以save為開頭的所有方法,即表示符合此命名規則的方法作為一個事務。
            propagation="REQUIRED"代表支持當前事務,如果當前沒有事務,就新建一個事務。這是最常見的選擇。
            (3)aop:pointcut標簽配置參與事務的類,由于是在Service中進行數據庫業務操作,配的應該是包含那些作為事務的方法的Service類。
            首先應該特別注意的是id的命名,同樣由于每個模塊都有自己事務切面,所以我覺得初步的命名規則因為all+模塊名+ServiceMethod。而且每個模塊之間不同之處還在于以下一句:
            expression="execution(*com.test.testAda.test.model.service.*.*(..))"
            其中第一個*代表返回值,第二*代表service下子包,第三個*代表方法名,“(..)”代表方法參數。
            (4)aop:advisor標簽就是把上面我們所配置的事務管理兩部分屬性整合起來作為整個事務管理。
            圖解:

          posted on 2014-10-30 11:35 順其自然EVO 閱讀(225) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年10月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 会东县| 古丈县| 安仁县| 隆回县| 南平市| 津南区| 永兴县| 乡城县| 安宁市| 健康| 卢湾区| 广饶县| 平远县| 鲁甸县| 宿松县| 固原市| 宁夏| 阿鲁科尔沁旗| 舟曲县| 会理县| 个旧市| 波密县| 芜湖县| 壶关县| 榕江县| 衡东县| 浦江县| 垣曲县| 玉林市| 抚顺市| 务川| 永定县| 越西县| 阳城县| 望奎县| 宜黄县| 邵阳市| 江安县| 吉隆县| 屏东市| 阿尔山市|