<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

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    相關(guān)鏈接

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    二、聲明式事務(wù)管理
            Spring聲明式管理主要是通過TransactionProxyFactoryBean來包裝要管理的目標(biāo)對象,代理目標(biāo)對象要實(shí)現(xiàn)的接口。
    看如下代碼
    首先定義一個目標(biāo)對象

        <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>

    同編程式事務(wù)管理,都需要有transactionManager的對象,這里就不再重復(fù)設(shè)置;下面看如果設(shè)置TransactionProxyFactoryBean來代理目標(biāo)對象

         <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屬性是目標(biāo)對象;proxyInterface是目標(biāo)對象所實(shí)現(xiàn)的接口;transactionAttributes屬性是定義事務(wù)的設(shè)置級別等。其中"-Exception"表示對所有的異常都做回滾動作。
    TransactionTemplatate
    如果要給對象添加更多的事務(wù)屬性,那么使用上述配置便會變得非常臃腫。為了避免該問題你可以使用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:創(chuàng)建一個應(yīng)用此模板的bean時(shí),使用parent屬性來引用此模板的id。然后在target屬性中將這個類定義為一個內(nèi)部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
    另一種配置聲明式事務(wù)的是指定一個引用了NameMatchTransactionAttributeSource類并定義了方法和它們行為的bean。這種策略不及template bean簡潔,因?yàn)樗笥肨ransactionProxyFactoryBean來包裝所有的bean。
    1:創(chuàng)建一個bean來描述事務(wù)屬性
    <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:創(chuàng)建一個包裝事務(wù)的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 扭曲的鉛筆 閱讀(252) 評論(0)  編輯  收藏 所屬分類: Spring
    主站蜘蛛池模板: 免费国产a国产片高清| 亚洲精品高清无码视频| 二级毛片免费观看全程| 亚洲国产精品成人久久| 国内免费高清在线观看| 国产精品永久免费| 亚洲欧洲另类春色校园网站| 一个人免费观看在线视频www| 亚洲人成影院在线观看| 国产精品区免费视频| 久久精品国产亚洲AV| 亚洲AV人人澡人人爽人人夜夜| 成人性生免费视频| 在线观看免费视频网站色| 亚洲国产成人精品无码区二本| 亚洲国产精品一区第二页| 美女黄网站人色视频免费国产 | 男女啪啪免费体验区| 亚洲综合激情另类小说区| 亚洲色一色噜一噜噜噜| 一二三四在线播放免费观看中文版视频| 一级毛片免费观看不收费| 亚洲人成色在线观看| 亚洲黄色三级视频| 久久影视国产亚洲| 国产成人无码免费视频97| 亚洲毛片免费观看| a毛片免费播放全部完整| 羞羞网站在线免费观看| 中文字幕亚洲情99在线| 亚洲成年人在线观看| 国产精品亚洲视频| 免费人成在线观看视频播放| 无码视频免费一区二三区| 6080午夜一级毛片免费看6080夜福利| xvideos永久免费入口| 青青久久精品国产免费看| 亚洲av永久中文无码精品综合| 亚洲国产成人手机在线电影bd | 久久久久亚洲爆乳少妇无| 永久黄网站色视频免费直播|