易出错记录

1、抽象基类Spring注入问题

特别注意:1、注解注入的属性需要用protected修饰,2、注解注入的属性需要有setter方法;

正确示例:

@Autowired
protected A a;

public void setA(A a) {
    this.a = a;
}

 2、spring事务隔离性,隔离级别,mysql默认隔离级别(可重复读)

 MYSQL可重复读的隔离级别下使用了MVCC机制,select操作不会更新版本号,是快照读(历史版本)

 同一事务下多次读结果一样,因此,并发情况下,两个事务下两个订单状态同时更改,每一个事务并不能读到另一个事务里的另一个订单状态发生变化。

   InnoDb在可重复读下,检索条件存在索引的情况下,会自动使用间隙锁,一定程度上防止了幻读。

错误用法:一个事务操作里,更新一个订单的状态的完成后,查询另一个订单的状态,当这个两个订单状态都是目标状态时,将另一个总的父记录状态更新,如两个订单同时更新,则总的父记录不会被更新。

原文地址:https://www.cnblogs.com/ccgblog/p/11149618.html