spring 事务管理 mysql默认事务

来源:互联网 发布:死亡扳机2机枪 mac 编辑:程序博客网 时间:2024/06/11 05:00

记录整理一下查到的内容

1,mysql默认事务隔离级别,如下:




2,业务方法开始时,声明了事务的方法,事务开始,方法结束时提交事务(网上原话是事务在开启他的那个方法结束后就提交。在一个事务空间(就是在一个事务里面)查询到的数据是这个事务空间里面的数据(换句话就是说你在这个事务里面添加的数据,在这个事务本身里面是能够看到的,只是其他事务不能看到这个数据而已))。 其中,方法内有掉用其它业务方法的,也声明了事务那就要看声明的是什么样的事务传播行为了。

eg:

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
3,配置文件

<tx:annotation-driven transaction-manager="transactionManager" order="2"/>


  • mode:指定Spring事务管理框架创建通知bean的方式。可用的值有proxy和aspectj。前者是默认值,表示通知对象是个JDK代理;后者表示Spring AOP会使用AspectJ创建代理
  • proxy-target-class:如果为true,Spring将创建子类来代理业务类;如果为false,则使用基于接口的代理。(如果使用子类代理,需要在类路径中添加CGLib.jar类库)
  • order:如果业务类除事务切面外,还需要织入其他的切面,通过该属性可以控制事务切面在目标连接点的织入顺序。(order属性是用来设置事务优先级的,值越小,优先级越高。因为spring事务管理是由aop实现,所以如果项目中自己有其它AOP就需要配置一下AOP执行优先级。)
  • transaction-manager:指定到现有的PlatformTransaction Manager bean的引用,通知会使用该引用

4,给方法添加事务时最好写在方法上面,因为写在接口上有时候会不生效。


阅读全文
0 0
原创粉丝点击