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

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

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

    Spring 中的事務管理學習心得

    Spring 中的事務管理學習心得


    可以使用<bean id="autoproxy"class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
       …
    </bean>

    進行自動代理,但是這里要注意的是自動代理針對的是advisor,advisor是由advice和pointcut(interceptor也是advice的一種)所組成的,所以單獨的interceptor不能使用,也就是說TransactionInterceptor不能使用。
    所以應該建立advisor,在事務管理中也就是TransactionAttributeSourceAdvisor。

    TransactionAttributeSourceAdvisor中需要配置TransactionInterceptor。
    配置示例如下:
    <bean id="transactionAdvisor"
    class="org.springframework.transaction.interceptor.
    TransactionAttributeSourceAdvisor">
    <property name="transactionInterceptor">
    <ref bean="transactionInterceptor"/>
    </property>
    </bean>

    TransactionInterceptor的配置如下:
    <bean id="transactionInterceptor"
    class="org.springframework.transaction.interceptor.
    TransactionInterceptor">
    <property name="transactionManager">
    <ref bean="transactionManager"/>
    </property>
    <property name="transactionAttributeSource">
    <ref bean="transactionAttributeSource"/>
    </property>
    </bean>

    其中transactionManager的配置根據所使用的存儲方法不同而不同:

    使用jdbc的配置如下:
    <bean id="transactionManager" class="org.springframework.jdbc.
    datasource.DataSourceTransactionManager">
    <property name="dataSource">
    <ref bean="dataSource"/>
    </property>
    </bean>

     使用hibernate的配置如下:
    <bean id="transactionManager" class="org.springframework.
    orm.hibernate.HibernateTransactionManager">
    <property name="sessionFactory">
    <ref bean="sessionFactory"/>
    </property>
    </bean>

    而transactionAttributeSource是一個接口,一般使用NameMatchTransactionAttributeSource實現此接口
    <bean id="transactionAttributeSource"
    class="org.springframework.transaction.interceptor.
    NameMatchTransactionAttributeSource">
    <property name="properties">
    <props>
    <prop key="get*">PROPAGATION_SUPPORTS</prop>
    </props>
    </property>
    </bean>
    注意其中的properties屬性是一個name/attribute 的map其中name是針對需要進行的事務管理的方法attribute是事務管理的屬性由TransactionAttribute決定
    而TransactionAttribute擴展的事務定義基本類TransactionDefinition,在這個基本類上面加上了boolean rollbackOn(Throwable ex)方法
    所以<prop key="get*">PROPAGATION_SUPPORTS</prop>的attribute還可以添加:
    如<prop key="get*">PROPAGATION_SUPPORTS,ISOLATION_SERIALIZABLE ,readonly</prop>



    以上是從宏觀到微觀的分析,
    以下是從微觀到宏觀的分析:

    1。設置事務管理屬性
    <bean id="transactionAttributeSource"
    class="org.springframework.transaction.interceptor.
    NameMatchTransactionAttributeSource">
    <property name="properties">
    <props>
    <prop key="get*v>PROPAGATION_SUPPORTS</prop>
    </props>
    </property>
    </bean>  
    2。設置事務管理器,根據所使用的存儲方法不同而不同:以hibernate為例

    <bean id="transactionManager" class="org.springframework.
    orm.hibernate.HibernateTransactionManager">
    <property name="sessionFactory">
    <ref bean="sessionFactory"/>
    </property>
    </bean>

    3。設置interceptor
    <bean id="transactionInterceptor"
    class="org.springframework.transaction.interceptor.
    TransactionInterceptor">
    <property name="transactionManager">
    <ref bean="transactionManager"/>
    </property>
    <property name="transactionAttributeSource">
    <ref bean="transactionAttributeSource"/>
    </property>
    </bean>

    4。最后設置advisor:
    <bean id="transactionAdvisor"
    class="org.springframework.transaction.interceptor.
    TransactionAttributeSourceAdvisor">
    <property name="transactionInterceptor">
    <ref bean="transactionInterceptor"/>
    </property>
    </bean>
    所以就可以通過自動代理進行代理了,
    注意這里的advisor還是有pointcut的,pointcut在事務管理中設置了,例如:
    <props>
    <prop key="get*">PROPAGATION_SUPPORTS</prop>
    </props>
    還有由于Spring本身的框架的原因,如果在Log4j中的調試級別為debug的話,那么設置advisor時就不能使用property方法,而要使用constructor-arg方法





    使用MethodMapTransactionAttributeSource可以對特定的類的方法進行事務管理
    設置property------setMethodMap
    Set a name/attribute map, consisting of "FQCN.method" method names (e.g. "com.mycompany.mycode.MyClass.myMethod") and TransactionAttribute instances (or Strings to be converted to TransactionAttribute instances).

    posted on 2007-09-10 17:18 劉錚 閱讀(940) 評論(0)  編輯  收藏 所屬分類: Spring

    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導航

    統計

    留言簿(1)

    文章分類(141)

    文章檔案(147)

    搜索

    最新評論

    主站蜘蛛池模板: 国产免费AV片在线观看| 中文字幕无码日韩专区免费| 免费阿v网站在线观看g| 亚洲高清国产拍精品26U| 久久精品免费大片国产大片| 精品国产人成亚洲区| 久青草国产免费观看| 亚洲精品麻豆av| 中国一级特黄的片子免费 | 好猛好深好爽好硬免费视频 | 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲精品视频免费看| 亚洲资源在线视频| 国内精品乱码卡1卡2卡3免费 | 国产精品亚洲综合一区| 久久精品免费网站网| 亚洲福利视频一区| 美女视频黄a视频全免费| 亚洲中文字幕无码中文| 国产在线播放免费| 精品久久久久久国产免费了| 亚洲精品国产成人片| 最近免费2019中文字幕大全| 亚洲乱人伦精品图片| 在线观看国产情趣免费视频| 一级毛片免费在线观看网站| 国产AV无码专区亚洲AV毛网站 | 国产亚洲精品久久久久秋霞| 中文成人久久久久影院免费观看| 亚洲av无码成人黄网站在线观看| 中文字幕免费在线看线人| 亚洲av成人一区二区三区观看在线| 亚洲黄片毛片在线观看| 外国成人网在线观看免费视频 | 免费无遮挡无遮羞在线看| 亚洲精品无码成人AAA片| 全免费毛片在线播放| 特黄特色大片免费| 久久久久亚洲AV无码专区首JN| 99视频在线精品免费观看6| 青青草97国产精品免费观看|