注释事务的使用!!
首先得在applicationContext.xml文件配置一下
<!-- 对dataSource 数据源进行事务管理 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource"/>
<!--注解式事务配置(这个注解就是 你哪些方法需要事务你就在那个方法上写一个@Transactional 这个标记)-->
<!-- 启用对事务注解的支持,自动扫描-->
<tx:annotation-driven transaction-manager="transactionManager"/>
使用注释事务的时候需要家此注释
@Transactional(propagation = Propagation.REQUIRED,readOnly = false,rollbackFor = Exception.class)```
- Spring中propagation的7种事务配置
一、在声明式的事务处理中,要配置一个切面,其中就用到了propagation,表示打算对这些方法怎么使用事务,是用还是不用,其中propagation有七种配置,REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER、NESTED。默认是REQUIRED。
二、Spring中七种Propagation类的事务属性详解:
REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。
MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。
REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。
NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。
三、注意.
这个配置将影响数据存储,必须根据情况选择。
readOnly = true 表示所注释的方法或类只是读取数据。
readOnly = false 表示所注释的方法或类是增加,删除,修改数据。
在项目中,@Transactional(rollbackFor=Exception.class),如果类加了这个注解,那么这个类里面的方
法抛出异常,就会回滚,数据库里面的数据也会回滚。
这种设置是因为Spring的默认回滚RuntimeException,如果想要回滚Exception时,要设置@Transactional(rollbackFor = Exception.class),而且Exception还要抛出