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

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

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

    swzhebei

    常用鏈接

    統計

    最新評論

    • 1.?re: 調用百度地圖小實例
    • 如果我有100個經緯度 請問,您是不是再代碼里寫100個?你這樣沒有價值,如何獲取動態的請說明!
    • --toly
    • 2.?re: 調用百度地圖小實例
    • 更改經緯度就不行了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    • --你姥姥

    對Spring事務配置的五種方式(轉載)

    轉載:http://www.tkk7.com/f6k66ve/archive/2012/05/30/379516.html
    Spring配置文件中關于事務配置總是由三個組成部分,分別是DataSource、TransactionManager和代理機制這三部分,無論哪種配置方式,一般變化的只是代理機制這部分。

      DataSource、TransactionManager這兩部分只是會根據數據訪問方式有所變化,比如使用Hibernate進行數據訪問時,DataSource實際為SessionFactory,TransactionManager的實現為HibernateTransactionManager。

      具體如下圖:

      Spring事務配置 (2)

      根據代理機制的不同,總結了五種Spring事務的配置方式,配置文件如下:
         第一種方式:每個Bean都有一個代理

     

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context
    ="http://www.springframework.org/schema/context"
        xmlns:aop
    ="http://www.springframework.org/schema/aop"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
    >

       
    <bean id="sessionFactory" 
                class
    ="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
           
    <property name="configLocation" value="classpath:hibernate.cfg.xml" /> 
           
    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
       
    </bean> 

       
    <!-- 定義事務管理器(聲明式的事務) --> 
       
    <bean id="transactionManager"
            class
    ="org.springframework.orm.hibernate3.HibernateTransactionManager">
           
    <property name="sessionFactory" ref="sessionFactory" />
       
    </bean>
       
       
    <!-- 配置DAO -->
       
    <bean id="userDaoTarget" class="com.bluesky.spring.dao.UserDaoImpl">
           
    <property name="sessionFactory" ref="sessionFactory" />
       
    </bean>
       
       
    <bean id="userDao" 
            class
    ="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> 
              
    <!-- 配置事務管理器 --> 
              
    <property name="transactionManager" ref="transactionManager" />    
           
    <property name="target" ref="userDaoTarget" /> 
            
    <property name="proxyInterfaces" value="com.bluesky.spring.dao.GeneratorDao" />
           
    <!-- 配置事務屬性 --> 
           
    <property name="transactionAttributes"> 
               
    <props> 
                   
    <prop key="*">PROPAGATION_REQUIRED</prop>
               
    </props> 
           
    </property> 
       
    </bean> 
    </beans>

     

      第二種方式:所有Bean共享一個代理基類

      

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context
    ="http://www.springframework.org/schema/context"
        xmlns:aop
    ="http://www.springframework.org/schema/aop"
        xsi:schemaLocation
    ="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
    >

       
    <bean id="sessionFactory" 
                class
    ="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
           
    <property name="configLocation" value="classpath:hibernate.cfg.xml" /> 
           
    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
       
    </bean> 

       
    <!-- 定義事務管理器(聲明式的事務) --> 
       
    <bean id="transactionManager"
            class
    ="org.springframework.orm.hibernate3.HibernateTransactionManager">
           
    <property name="sessionFactory" ref="sessionFactory" />
       
    </bean>
       
       
    <bean id="transactionBase" 
                class
    ="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" 
                lazy-init
    ="true" abstract="true"> 
           
    <!-- 配置事務管理器 --> 
           
    <property name="transactionManager" ref="transactionManager" /> 
           
    <!-- 配置事務屬性 --> 
           
    <property name="transactionAttributes"> 
               
    <props> 
                   
    <prop key="*">PROPAGATION_REQUIRED</prop> 
               
    </props> 
           
    </property> 
       
    </bean>   
      
       
    <!-- 配置DAO -->
       
    <bean id="userDaoTarget" class="com.bluesky.spring.dao.UserDaoImpl">
           
    <property name="sessionFactory" ref="sessionFactory" />
       
    </bean>
       
       
    <bean id="userDao" parent="transactionBase" > 
           
    <property name="target" ref="userDaoTarget" />  
       
    </bean>
    </beans>

            第三種方式:使用攔截器

      

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context
    ="http://www.springframework.org/schema/context"
        xmlns:aop
    ="http://www.springframework.org/schema/aop"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
    >

       
    <bean id="sessionFactory" 
                class
    ="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
           
    <property name="configLocation" value="classpath:hibernate.cfg.xml" /> 
           
    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
       
    </bean> 

       
    <!-- 定義事務管理器(聲明式的事務) --> 
       
    <bean id="transactionManager"
            class
    ="org.springframework.orm.hibernate3.HibernateTransactionManager">
           
    <property name="sessionFactory" ref="sessionFactory" />
       
    </bean> 
      
       
    <bean id="transactionInterceptor" 
            class
    ="org.springframework.transaction.interceptor.TransactionInterceptor"> 
           
    <property name="transactionManager" ref="transactionManager" /> 
           
    <!-- 配置事務屬性 --> 
           
    <property name="transactionAttributes"> 
               
    <props> 
                   
    <prop key="*">PROPAGATION_REQUIRED</prop> 
               
    </props> 
           
    </property> 
       
    </bean>
         
       
    <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> 
           
    <property name="beanNames"> 
               
    <list> 
                   
    <value>*Dao</value>
                </list> 
           
    </property> 
           
    <property name="interceptorNames"> 
               
    <list> 
                   
    <value>transactionInterceptor</value> 
               
    </list> 
           
    </property> 
       
    </bean> 
     
       
    <!-- 配置DAO -->
       
    <bean id="userDao" class="com.bluesky.spring.dao.UserDaoImpl">
           
    <property name="sessionFactory" ref="sessionFactory" />
       
    </bean>
    </beans>

     

       第四種方式:使用tx標簽配置的攔截器

     

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context
    ="http://www.springframework.org/schema/context"
        xmlns:aop
    ="http://www.springframework.org/schema/aop"
        xmlns:tx
    ="http://www.springframework.org/schema/tx"
        xsi:schemaLocation
    ="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
               http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
    >

       
    <context:annotation-config />
       
    <context:component-scan base-package="com.bluesky" />

       
    <bean id="sessionFactory" 
                class
    ="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
           
    <property name="configLocation" value="classpath:hibernate.cfg.xml" /> 
           
    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
       
    </bean> 

       
    <!-- 定義事務管理器(聲明式的事務) --> 
       
    <bean id="transactionManager"
            class
    ="org.springframework.orm.hibernate3.HibernateTransactionManager">
           
    <property name="sessionFactory" ref="sessionFactory" />
       
    </bean>

       
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
           
    <tx:attributes>
               
    <tx:method name="*" propagation="REQUIRED" />
           
    </tx:attributes>
       
    </tx:advice>
       
       
    <aop:config>
           
    <aop:pointcut id="interceptorPointCuts"
                expression
    ="execution(* com.bluesky.spring.dao.*.*(..))" />
           
    <aop:advisor advice-ref="txAdvice"
                pointcut-ref
    ="interceptorPointCuts" />       
       
    </aop:config>     
    </beans>

     

      第五種方式:全注解

     


    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context
    ="http://www.springframework.org/schema/context"
        xmlns:aop
    ="http://www.springframework.org/schema/aop"
        xmlns:tx
    ="http://www.springframework.org/schema/tx"
        xsi:schemaLocation
    ="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
               http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
    >

       
    <context:annotation-config />
       
    <context:component-scan base-package="com.bluesky" />

       
    <tx:annotation-driven transaction-manager="transactionManager"/>

       
    <bean id="sessionFactory" 
                class
    ="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
           
    <property name="configLocation" value="classpath:hibernate.cfg.xml" /> 
           
    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
       
    </bean> 

       
    <!-- 定義事務管理器(聲明式的事務) --> 
       
    <bean id="transactionManager"
            class
    ="org.springframework.orm.hibernate3.HibernateTransactionManager">
           
    <property name="sessionFactory" ref="sessionFactory" />
       
    </bean>
       
    </beans>

     

      此時在DAO上需加上@Transactional注解,如下:

     


     package com.bluesky.spring.dao;
      import java.util.List;
      import org.hibernate.SessionFactory;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
      import org.springframework.stereotype.Component;
      import com.bluesky.spring.domain.User;
      @Transactional
      @Component("userDao")
      public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
      public List listUsers() {
      return this.getSession().createQuery("from User").list();
      }
      
      }

    posted on 2012-05-30 14:33 透明的魚 閱讀(241) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: AV在线播放日韩亚洲欧| 午夜一级毛片免费视频| 亚洲日本中文字幕天堂网| 亚洲国产精品免费观看| 精品熟女少妇av免费久久| 亚洲第一AAAAA片| 成人毛片100免费观看| 一本久久综合亚洲鲁鲁五月天 | 国产免费MV大全视频网站| 国产jizzjizz视频全部免费| 亚洲精品无码mⅴ在线观看| 欧美a级成人网站免费| 亚洲国产成人精品无码一区二区| 亚洲人成人77777在线播放| 91制片厂制作传媒免费版樱花| 无码一区二区三区AV免费| 亚洲一区二区三区国产精品无码| 偷自拍亚洲视频在线观看99| 老司机永久免费网站在线观看| 亚洲日韩精品无码专区网址| 中文字幕乱理片免费完整的| 亚洲精品你懂的在线观看 | 国产性生大片免费观看性| 免费国产成人高清在线观看麻豆| 亚洲一区精品中文字幕| 小草在线看片免费人成视久网| 日韩一级在线播放免费观看| 美国毛片亚洲社区在线观看| 免费人成视频在线观看视频| 亚洲AV永久无码精品一福利 | 九九美女网站免费| 亚洲bt加勒比一区二区| 最近中文字幕免费完整| 456亚洲人成在线播放网站| 福利免费观看午夜体检区| 亚洲av无码专区亚洲av不卡| 国产成人高清亚洲| 99久热只有精品视频免费观看17| 国产成人A亚洲精V品无码| 成全在线观看免费观看大全| 91亚洲国产成人久久精品|