# 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; } ```