<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 37  文章 - 14  trackbacks - 0
    <2007年8月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    相關鏈接

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    二、聲明式事務管理
            Spring聲明式管理主要是通過TransactionProxyFactoryBean來包裝要管理的目標對象,代理目標對象要實現的接口。
    看如下代碼
    首先定義一個目標對象

        <bean id="spcJlxDataSaveServiceTarget"
            class
    ="com.spc.spring.business.service.SpcJlxDataSaveServiceImp"
            abstract
    ="false" singleton="true" lazy-init="default"
            autowire
    ="default" dependency-check="default">
            
    <property name="spcGzxmServiceImp">
                
    <ref bean="spcGzxmServiceImp" />
            
    </property>
            
    <property name="spcJlxDataService">
                
    <ref bean="spcJlxDataService" />
            
    </property>
        
    </bean>

    同編程式事務管理,都需要有transactionManager的對象,這里就不再重復設置;下面看如果設置TransactionProxyFactoryBean來代理目標對象

         <bean id="spcJlxDataSaveServiceImp"
         class
    ="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
         
    <property name="proxyInterfaces">
             
    <list>
                 
    <value>com.spc.spring.business.ISpcJlxDataSaveService</value>
             
    </list>
         
    </property>
         
    <property name="target">
             
    <ref bean="spcJlxDataSaveServiceTarget"/>
         
    </property>
         
    <property name="transactionManager">
             
    <ref bean="transactionManager"/>
         
    </property>
         
    <property name="transactionAttributes">
             
    <props>
             
    <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>
             
    </props>
         
    </property>
         
    </bean>

    target屬性是目標對象;proxyInterface是目標對象所實現的接口;transactionAttributes屬性是定義事務的設置級別等。其中"-Exception"表示對所有的異常都做回滾動作。
    TransactionTemplatate
    如果要給對象添加更多的事務屬性,那么使用上述配置便會變得非常臃腫。為了避免該問題你可以使用Transaction Template Beanr為了繼承這個bean
    的所有bean指定屬性如下,1:先定義一個tmplate bean

    <bean id="txProxyTemplate" abstract="true"
    class
    ="org.springframework.transaction.interceptor.
    TransactionProxyFactoryBean"
    >
    <property name="transactionManager">
    <ref bean="transactionManager"/>
    </property>
    <property name="transactionAttributes">
    <props>
    <prop key="save*">PROPAGATION_REQUIRED</prop>
    <prop key="remove*">PROPAGATION_REQUIRED</prop>
    <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
    </props>
    </property>
    </bean>
    2:創建一個應用此模板的bean時,使用parent屬性來引用此模板的id。然后在target屬性中將這個類定義為一個內部bean
    <bean id="userManager" parent="txProxyTemplate">
    <property name="target">
    <bean class="org.appfuse.service.impl.UserManagerImpl">
    <property name="userDAO"><ref bean="userDAO"/></property>
    </bean>
    </property>
    </bean>
    TransactionAttributeSource
    另一種配置聲明式事務的是指定一個引用了NameMatchTransactionAttributeSource類并定義了方法和它們行為的bean。這種策略不及template bean簡潔,因為它要求用TransactionProxyFactoryBean來包裝所有的bean。
    1:創建一個bean來描述事務屬性
    <bean name="txAttributes"
    class
    ="org.springframework.transaction.interceptor.
    NameMatchTransactionAttributeSource"
    >
    <property name="properties">
    <props>
    <prop key="save*">PROPAGATION_REQUIRED</prop>
    <prop key="remove*">PROPAGATION_REQUIRED</prop>
    <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
    </props>
    </property>
    </bean>

    2:創建一個包裝事務的bean定義,在transactionAttributeSource屬性中引用這個bean

    <bean id="userManager"
    class
    ="org.springframework.transaction.interceptor.
    TransactionProxyFactoryBean"
    >
    <property name="transactionManager">
    <ref bean="transactionManager"/>
    </property>
    <property name="target">
    <bean class="org.appfuse.service.impl.UserManagerImpl">
    <property name="userDAO">
    <ref bean="userDAO"/>
    </property>
    </bean>
    </property>
    <property name="transactionAttributeSource">
    <ref bean="txAttributes"/>
    </property>
    </bean>
    posted on 2007-08-09 14:46 扭曲的鉛筆 閱讀(257) 評論(0)  編輯  收藏 所屬分類: Spring
    主站蜘蛛池模板: 久久久久久久综合日本亚洲 | 国产成人精品日本亚洲专区6| 国产日韩一区二区三免费高清| 亚洲成a人片在线观看日本麻豆 | 亚洲AV无码一区东京热久久| 精品一区二区三区免费观看 | 国产在线ts人妖免费视频| 中文字幕亚洲综合久久综合| 欧美日韩国产免费一区二区三区| 亚洲精品中文字幕无乱码麻豆| 青春禁区视频在线观看直播免费| 国产亚洲精品成人AA片| 成人免费无码精品国产电影| 国产亚洲Av综合人人澡精品| 亚洲人成网站在线观看青青| 精品国产免费人成网站| 亚洲AV永久无码精品成人| 最近中文字幕电影大全免费版| 亚洲成aⅴ人片在线影院八| 成人免费a级毛片| 蜜芽亚洲av无码一区二区三区| 日产乱码一卡二卡三免费| 成人免费夜片在线观看| 亚洲成A人片在线观看无码不卡 | 成人免费无码大片A毛片抽搐 | 久久精品国产亚洲av天美18| 亚洲国产成人精品无码久久久久久综合| 免费激情网站国产高清第一页| 中文字幕不卡亚洲| 67pao强力打造高清免费| 亚洲综合色婷婷在线观看| 婷婷综合缴情亚洲狠狠尤物| 成人自慰女黄网站免费大全| 亚洲国产精品免费在线观看| 国产亚洲福利一区二区免费看| a级毛片在线免费| 日韩亚洲产在线观看| 中文字幕久久亚洲一区| 永久免费AV无码国产网站 | 亚洲欧洲精品成人久久曰| 亚洲综合色婷婷七月丁香|