# d-lock-boot-starter
**Repository Path**: 88joel/d-lock-boot-starter
## Basic Information
- **Project Name**: d-lock-boot-starter
- **Description**: 适用于springboot项目快速使用的分布式锁,有zk和redis两种实现
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2020-06-14
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# d-lock-boot-starter
#### 介绍
适用于springboot项目快速使用的分布式锁,有zk和redis两种实现
#### 软件架构
软件架构说明
#### 使用说明
1. pom文件引入依赖
```
1.8
1.8.11
2.9.0
20.0
2.8.0
4.1.1
org.aspectj
aspectjweaver
${aspectj.version}
redis.clients
jedis
${jedis.version}
com.google.guava
guava
${guava.version}
org.apache.curator
curator-recipes
${curator.version}
com.google.guava
guava
cn.hutool
hutool-all
${hutool.version}
com.hjb
common-lock
1.0-SNAPSHOT
compile
```
2. springboot启动类上加入@EnableZkLock或者@EnableRedisLock注解,推荐使用zk实现的分布式锁
```
@SpringBootApplication
@EnableZkLock
class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
```
3. 在需要加锁的方法上使用注解@Lock,
其中timeout设置锁超时时间默认为5000ms,
lockId设置锁的唯一id
errorMethodName定义锁错误的时候执行的回调方法,非必须
timeOutMethodName定义锁超时的时候执行的回调方法,非必须
```
@Lock(timeout = 1000,lockId = "order",
errorMethodName = "com.hjb.controller.LockController.lockError(java.lang.String)",
timeOutMethodName = "com.hjb.controller.LockController.lockTimeOut(java.lang.String)"
)
@RequestMapping(value = "test", method = RequestMethod.GET)
public Object testLockAnnotation(String id){
//todo 需要执行的代码
}
public String lockTimeOut(String id){
String msg = "业务"+id+"锁已被占用,锁占用业务处理";
return msg;
}
public String lockError(String id){
String msg = "业务"+id+"锁获取失败,锁异常业务处理";
return msg;
}
```