对了加了 @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");
        }
    });
}

夜梦
1 声望1 粉丝

这人吧,不努力终究还是会后悔的。