在原本的配置文件中新增以下

    <!-- 事务管理器 -->
    <bean id="txMannager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 引用数据源 -->
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!-- 事务增强 -->
    <tx:advice id="txAdvice" transaction-manager="txMannager">
        <!-- 事务规则 -->
        <tx:attributes>
            <!-- 使用通配符 -->
            <!-- 所有find开头的方法都加到事务里面来 -->
            <!-- timeout超时时间-1永不抄手,单位秒 -->
            <tx:method name="find*" timeout="-1"/>
            <!-- propagation传播属性,表示这些方法总是在事务里面,如果不在就创建一个事务 -->
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>
    <!-- 在那些方法上执行事务,方法在哪个包下面,通过切面来进行配置 -->
    <aop:config>
        <!-- 配置切入点 -->
        <aop:pointcut id="myPoint" expression="execution(* cn.smbms.service..*.*(..))"/>
        <!-- 为方法织入事务的增强 -->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="myPoint"/>
    </aop:config>


我对于spring事务的理解就是,在调用方法的时候通过aop切面织入我们配置的事务处理增强人,然后通过事务增强里面的规则进行事务处理。


标签: spring

添加新评论