发现 我们平时使用 分布式锁的方式有问题 如: try {} finnally{ 释放锁} , 如果方法有事务的话 , 进到finnally 的时候并不代表,数据已经持久化。 会导致锁提前释放,正确的做法应该是 事物完成后再释放锁。
/**
* 事务结束后释放锁
*/
private void unlockAfterTransaction(LockResult lockResult) {
//事物完成后释放锁
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCompletion(int status) {
super.afterCompletion(status);
distLockSservice.unlock(lockResult);
}
});
}
来源:CSDN
作者:矫首遐观
链接:https://blog.csdn.net/u010408502/article/details/104001087