以下是基于 Spring AOP + Redisson + CompletableFuture 实现的 异步方法自动释放分布式
锁 方案。锁会在异步方法执行完成后(无论成功或异常)自动释放,无需手动操作 finally
块。
1. 自定义注解 @AsyncDistributedLock
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AsyncDistributedLock {
String lockKey(); // 锁名称(支持SpEL表达式)
long waitTime() default 10_000; // 等待锁时间(毫秒)
long leaseTime() default 30_000; // 锁持有时间(毫秒)
}
2. AOP 切面实现自动锁管理
@Aspect
@Component
public class AsyncLockAspect {
@Autowir