对了加了 @Transactional的方法,当方法抛出异常时会自动回滚。如果我们此时想在回滚前执行一些方法,如释放锁。可以这么写:
/**
* 适用于事务方法:事务完成后再释放锁
*
* @param key
* @param requestId
*/
private void unlockAfterTransaction(String key, String requestId) {
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCompletion(int status) {
super.afterCompletion(status);
distributeLocker.unlock(key, requestId);
log.info("unlock success");
}
});
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。