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

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

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

    The important thing in life is to have a great aim , and the determination

    常用鏈接

    統計

    IT技術鏈接

    保險相關

    友情鏈接

    基金知識

    生活相關

    最新評論

    Spring事務配置的五種方式

    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<User> listUsers() {
            return this.getSession().createQuery(“from User”).list();
        }
       
       
    }

    posted on 2011-10-27 19:29 鴻雁 閱讀(304) 評論(0)  編輯  收藏 所屬分類: IT技術相關

    主站蜘蛛池模板: 亚洲成av人片在线天堂无| 亚洲午夜久久久精品电影院| 黄色a级片免费看| 全黄性性激高免费视频| 亚洲变态另类一区二区三区 | 亚洲欧美成人综合久久久| 亚洲成在人线aⅴ免费毛片| 亚洲AV色吊丝无码| 毛片网站免费在线观看| 亚洲爆乳精品无码一区二区| 四虎永久免费地址在线网站| 一级做a爰片久久毛片免费陪 | 99久久99久久免费精品小说| 久久久久亚洲AV无码永不| 久久免费看黄a级毛片| 亚洲AV无码久久久久网站蜜桃| 免费无码又爽又刺激聊天APP| 亚洲AV色欲色欲WWW| 亚洲国产高清精品线久久| a在线视频免费观看在线视频三区 a毛片成人免费全部播放 | 美美女高清毛片视频黄的一免费 | 国产精品白浆在线观看免费| 亚洲黄色在线播放| 成人一a毛片免费视频| 成人在线免费视频| 亚洲视频免费播放| 国产又大又粗又硬又长免费| 久久久受www免费人成| 亚洲综合久久成人69| 国产真人无遮挡作爱免费视频| a级毛片免费网站| 亚洲男女性高爱潮网站| 国产精品成人无码免费| 两个人看的www免费视频中文| 亚洲人成网站日本片| 亚洲国模精品一区| 成人免费观看一区二区| 老妇激情毛片免费| 久久久久久亚洲精品成人| 国产精品酒店视频免费看| 午夜精品射精入后重之免费观看 |