zoukankan      html  css  js  c++  java
  • spring事务管理配置总结 (最容易理解的)

    事务代理标准写法

    <!--DAO层接口实现  -->
    <bean id="userDAO" class="net.test.dao.UserDAO">
           <property name="sessionFactory">
                  <ref local="sessionFactory" />
           </property>
    </bean>
     <!--业务层接口实现,把DAO注入到Service里面 --> 
    <bean name="userServiceTarget" class="net.test.service.UserService">
           <property name="userDAO">
                  <ref bean="userDAO" />
           </property>
    </bean>
    <!--spring代理业务层的事务管理 -->
    <bean id="userServiceProxy"  class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
           <property name="transactionManager">
                  <ref local="transactionManager" />
           </property>
           <property name="transactionAttributes">
                  <props>
                        <prop key="insert*">PROPAGATION_REQUIRED</prop>
                        <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
                  </props>
           </property>
           <property name="target">
                  <ref bean="userServiceTarget" />
           </property>
    </bean>

    事务代理简写法

    <bean id="baseTxProxy" lazy-init="true"
            class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
            <property name="transactionManager">
                <ref bean="transactionManager" />
            </property>
            <property name="transactionAttributes">
                <props>
                    <prop key="insert*">PROPAGATION_REQUIRED</prop>
                    <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
                </props>
            </property>
        </bean>
        <bean id="userDAO" class="net.test.dao.UserDAO">
            <property name="sessionFactory">
                <ref local="sessionFactory" />
            </property>
        </bean>
        <bean id="userServiceProxy" parent="baseTxProxy">
            <property name="target">
                <bean class="net.test.service.UserService">
                    <property name="userDAO">
                        <ref local="userDAO" />
                    </property>
                </bean>
            </property>
        </bean>

    事务自动化代理写法

    <!-- 定义事务拦截器bean -->
        <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
            <property name="transactionManager" ref="transactionManager"/>
            <property name="transactionAttributes">
                <props>
                    <prop key="insert*">PROPAGATION_REQUIRED</prop>
                    <prop key="update*">PROPAGATION_REQUIRED</prop>
                    <prop key="delete*">PROPAGATION_REQUIRED</prop>
                    <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
                    <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
                    <prop key="*">PROPAGATION_REQUIRED</prop>
                </props>
            </property>
        </bean>
        <!--定义BeanNameAutoProxyCreator-->
        <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
            <property name="beanNames">
            <!--
                 所有名字以DAO,Service结尾的bean,
                将由该"bean后处理器"为其创建事务代理;
                实际上应该在业务层进行事务管理,
                这里只是举一个简单例子 
                -->
                <value>*DAO,*ServiceProxy</value>
            </property>
            <!--下面定义BeanNameAutoProxyCreator所需的事务拦截器-->
            <property name="interceptorNames">
                <list>
                <!--可以增加其他的拦截器-->
                <value>transactionInterceptor</value>
                </list>
            </property>
        </bean>
        <bean id="userDAO" class="net.test.dao.UserDAO">
            <property name="sessionFactory">
                <ref local="sessionFactory" />
            </property>
        </bean>
        <bean id="userServiceProxy" class="net.test.service.UserService">
            <property name="userDAO">
                <ref bean="userDAO" />
            </property>
        </bean>

    转自:http://www.blogjava.net/beauty9235/archive/2008/08/18/222841.html

  • 相关阅读:
    pm2 配置
    添加项目到远程服务器(git)
    psql 命令行使用
    SQL
    iOS AFNetworking 打印从服务器返回的错误提示信息
    iOS 获取网络图片的大小
    iOS 10 常见配置的问题
    LGLTagsView
    xcode8 关闭控制台打印不用信息
    LGLProgressHUD
  • 原文地址:https://www.cnblogs.com/xinzhuangzi/p/4100484.html
Copyright © 2011-2022 走看看