Spring 的两种事务配置方法到底哪种好,搞不明白


    <!-- service基类 -->
    <bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true" >
        <property name="transactionManager">
            <ref bean="transactionManager" />
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop>
                <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
                <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop>
                <prop key="copy*">PROPAGATION_REQUIRED,-Exception</prop>
                <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
            </props>
        </property>
    </bean>   
    
    <bean id="simpleService" parent="baseTransactionProxy">
        <property name="target">
            <bean class="*.service.impl.SimpleServiceImpl">
                <property name="simpleDAO" ref="simpleDAO" />
            </bean>
        </property>
    </bean>


<!-- AOP 事务实现 -->

<tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="insert*" propagation="REQUIRED"  rollback-for="java.lang.Exception"/>
            <tx:method name="update*" propagation="REQUIRED"  rollback-for="java.lang.Exception"/>
            <tx:method name="delete*" propagation="REQUIRED"  rollback-for="java.lang.Exception"/>
            <tx:method name="regsiter*" propagation="REQUIRED"  rollback-for="java.lang.Exception"/>
            <tx:method name="add*" propagation="REQUIRED"  rollback-for="java.lang.Exception"/>
            <tx:method name="withdraw*" propagation="REQUIRED"  rollback-for="java.lang.Exception"/>
            <tx:method name="accept*" propagation="REQUIRED"  rollback-for="java.lang.Exception"/>
            <tx:method name="batch*" propagation="REQUIRED"  rollback-for="java.lang.Exception"/>
            <tx:method name="archive*" propagation="REQUIRED"  rollback-for="java.lang.Exception"/>
            <tx:method name="*" read-only="true" />
        </tx:attributes>
    </tx:advice>
    <aop:aspectj-autoproxy proxy-target-class="true" />
    <aop:config>
        <aop:advisor pointcut="execution(* cn.*.*.service..*.*(..))"
            advice-ref="txAdvice" />
    </aop:config>



你可能感兴趣的:(java,AOP,IOC,srping)