应避免使用嵌套connection的场景,否则在高并发上将从出现死锁

应避免使用嵌套connection的场景,否则在高并发下将从出现死锁例如如下的代码:?entityListenerController.a

应避免使用嵌套connection的场景,否则在高并发下将从出现死锁

例如如下的代码:

?

entityListenerController.afterLoad(className, list);

中使用又调用了另外的manager去执行查询,如此就形成了

ConnectionA open

ConnectionB open

ConnectionB close

ConnectionA close

的情形,这种使用方法在高并发下将导致因获取Connection而引发的死锁。

?

一种解决方法是加上只读事务@Transactional(readOnly = true)

以保证使用同一个Connection。