# locker-solon-plugin **Repository Path**: solonlab/locker-solon-plugin ## Basic Information - **Project Name**: locker-solon-plugin - **Description**: 基于Redisson和自定义注解实现的Solon分布式锁插件 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-06-30 - **Last Updated**: 2025-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 介绍 locker-solon-plugin是一个基于Redisson的分布式锁插件,可以让Solon应用支持分布式锁。 前置依赖是redisson-solon-plugin redis配置方式可以参考[redisson-solon-plugin](https://solon.noear.org/article/533) # 1.0.3版本更新: - 适配Solon-cloud接口 ``` // 尝试获取锁,获取成功返回true,加锁成功5秒后自动释放锁 CloudClient.lock().tryLock("prefix","lockKey", 5); ``` # 如何使用 ## 1. 添加依赖 在pom.xml中添加如下依赖: ``` top.jim-lee locker-solon-plugin 1.0.3 ``` ## 2. 注解方式 在需要加锁的方法上添加@OperationLock注解,并指定参数: ``` @OperationLock( expression = "${id}", // Solon EL表达式,用于指定锁的范围 lockKeyPrefix = "doSomeThingLock", // 前缀,默认是Solon.cfg().appName() 若appName为固定为lock releaseTime = 10 // 自动释放锁的时间,单位秒,默认是-1,开启看门狗自动续锁 ) public void doSomeThing(Long id) { //do something } ``` ## 3. 代码方式 ``` public class Tests { @Inject Locker locker; //注入Locker接口 public void test() { //定义前缀、锁名称、自动释放时间 locker.lock("prefix","lock", 1000, () -> { // do something }); //定义锁名称、自动释放时间,采用默认前缀 locker.lock("lock", 1000, () -> { // do something }); //定义锁名称,采用默认前缀及默认自动释放时间 locker.lock("lock", () -> { // do something }); } } ``` # 相关配置 ``` locker: enable: true #是否启用分布式锁 log: true #是否打印日志 level: info ```