<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 鴻雁 閱讀(305) 評論(0)  編輯  收藏 所屬分類: IT技術相關

    主站蜘蛛池模板: 亚洲国产综合专区在线电影| 国产精品深夜福利免费观看| 亚洲视频在线免费| 无遮挡a级毛片免费看| 亚洲AV无码乱码在线观看牲色 | 久久久久亚洲AV无码专区首JN| 鲁丝片一区二区三区免费| 亚洲国产精华液网站w| 国产免费AV片在线观看| 午夜亚洲www湿好大| 亚洲成年人免费网站| 亚洲精品天堂在线观看| 色吊丝最新永久免费观看网站 | 日韩高清免费观看| 野花视频在线官网免费1| 亚洲AV无码乱码在线观看性色扶 | 亚洲一区二区三区播放在线| 99久久免费精品国产72精品九九| 亚洲国产精品嫩草影院| 免费国产成人午夜私人影视| 成年女人A毛片免费视频| 亚洲AV日韩AV高潮无码专区| 蜜桃AV无码免费看永久| 亚洲综合av一区二区三区不卡 | 222www免费视频| 亚洲日韩乱码中文字幕| 免费一级黄色毛片| 精品免费视在线观看| 亚洲区精品久久一区二区三区| 成年女人毛片免费播放人| 七次郎成人免费线路视频 | 亚洲综合伊人久久综合| 精品一区二区三区免费毛片爱| 亚洲人成电影网站久久| 亚洲视频在线精品| 午夜福利不卡片在线播放免费| 日韩在线视精品在亚洲| 亚洲一二成人精品区| 国产片免费福利片永久| 国产一级淫片a免费播放口| 亚洲av综合av一区二区三区|