【spring笔记】Spring声明事务

前情提要:事物在Mysql数据库中已经学过,具有ACID的特性

1、Spring事物管理分为两类:

声明式事物:AOP
编程式事物:需要在代码中,进行事物的管理

编程式事物还是没有AOP的统一处理的优势

1.1、以AOP配置事物的方式:

官网原话: 要开启 Spring 的事务处理功能,在 Spring 的配置文件中创建一个 DataSourceTransactionManager 对象:


<!--配置声明式事物-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <constructor-arg ref="dataSource" />
</bean>

然后配置AOP中的通知,针对事物的,这里Spring帮忙给写好了,就不需要再写切面类了,这里可以定义什么方法会有事物参与。

<tx:advice id="txAdvice" transaction-manager="transactionManager">
        <!--给哪些方法配置事物-->
        <!--配置事物的传播特性:propagation(默认是REQUIRED,没有事物就添加事物) -->
        <tx:attributes>
                <!--<tx:method name="add" propagation="REQUIRED"/>
                <tx:method name="del"/>
                <tx:method name="update"/>
                <tx:method name="query"/>-->
                <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
</tx:advice>

配置事物的切入点

<!--配置事物切入-->
<aop:config>
        <aop:pointcut id="txPointCut" expression="execution(* com.wcy.mapper.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
</aop:config>

这样就可以实现针对于所有方法进行事物处理。

注:事物的传播特性有以下几个,就是遇到各种情况怎么处理事物,加还是不加,默认就是 REQUIRED

posted @ 2023-02-28 11:14  吴承勇  阅读(14)  评论(0编辑  收藏  举报