分布式简单锁实现,一个注解开启分布式锁;
注:需要开启AOP功能,依靠注解快速实现锁(默认包括redisson分布式锁)
注2:应用到线上环境请确保了解关键逻辑,或经过详细测试
- clone项目:
git clone https://github.com/pdkst/redisson-spoon-spring-boot-starter.git
- cd到项目目录
cd redisson-spoon-spring-boot-starter
- maven编译安装到本地仓库:
mvn clean install
- 或者maven编译发布到maven私服仓库(需要在setting.xml中配置私服地址):
mvn clean deploy
maven项目:将LEAST
替换成要使用的版本,比如1.0-SNAPSHOT
<dependency>
<groupId>io.github.pdkst</groupId>
<artifactId>redisson-spoon-spring-boot-starter</artifactId>
<version>LEAST</version>
</dependency>
然后在pom.xml文件目录执行mvn打包命令即可引入
mvn clean package -Dmaven.test.skip
最小配置,引入即开启JavaCore
CoreLock功能受限,默认配置只有一个全局锁
如果Spring项目中存在RedissonClient实例则默认开启Redisson全局锁
pdkst:
redisson:
spoon:
lock:
enable: true
lock-prefix: pdkst:github:lock
@Slf4j
@Component
public class LockAspectTarget {
public LockAspectTarget() {
log.info("LockAspectTarget construct...");
}
@RedissonLock("#root.args[0]")
public void rootTarget(String lockName) {
log.info("lock name = {}", lockName);
}
@RedissonLock("#lockName")
public void paramNameTarget(String lockName) {
log.info("lock name = {}", lockName);
}
}
#root
对象指向io.github.pdkst.redisson.spoon.lock.context.InvokerContext
#lockName
指向参数名字(示例参数名字是lockName
)#method
指向当前方法java.lang.reflect.Method
类型