Lock4j 分布式锁封装b
@ Lock4j 注解和 @Transactional 注解,是先释放锁还是先提交事物呢。
加锁 开启事务 关闭事务 解锁
一、简介
Lock4j是一个分布式锁组件,它提供了多种不同的支持以满足不同性能和环境的需求,基于Spring AOP的声明式和编程式分布式锁,支持RedisTemplate、Redisson、Zookeeper。
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
- 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
- 视频教程:https://doc.iocoder.cn/video/
二、特性
- 简单易用,功能强大,扩展性强。
- 支持redission, redisTemplate, zookeeper,可混用,支持扩展。
开源地址:
三、使用前准备
3.1 引入依赖
3.2 添加redis配置
四、注解属性介绍
五、简单使用
打开浏览器窗口,重复刷新访问:
成功获得锁访问结果:
抢占不到锁,Lock4j会抛出
异常,通过全局异常处理返回如下结果:
六、高级使用
6.1 自定义执行器Exector
在注解上直接指定特定的执行器:
@Lock4j(executor = CustomRedissonLockExecutor.class)
。6.2 自定义分布式锁key生成器
6.3 自定义抢占锁失败执行策略
默认的锁获取失败策略为
com.baomidou.lock.DefaultLockFailureStrategy
.6.4 手动加锁释放锁
Loading...