内容简介:简介 lock4j-spring-boot-starter是一个分布式锁组件,其提供了多种不同的支持以满足不同性能和环境的需求。 立志打造一个简单但富有内涵的分布式锁组件。 2.1.0 feat: 新增Lock4jProperties支持全局配置锁过期、...
简介
lock4j-spring-boot-starter是一个分布式锁组件,其提供了多种不同的支持以满足不同性能和环境的需求。
立志打造一个简单但富有内涵的分布式锁组件。
2.1.0
- feat: 新增Lock4jProperties支持全局配置锁过期、获取锁超时时间、默认锁执行器等
- update: 修改Lock4j注解里的lockClient参数名为executor
- update: 新增锁执行器支持自定义扩展,支持方法级别配置executor
- update: 修改锁执行器为单例
- remove: 移除Lock4j注解里的lockType参数
- remove: 移除Lock4j注解里的keyBuilder参数(扩展keyBuilder需要自行实现LockKeyBuilder接口并声明为spring bean)
- fix: 修复lockExecutor没有引入相关class的情况下抛class no found
- feat: 新增不指定executor前提下,默认优先级redisson>redisTemplate>zookeeper
- remove: 移除Lock4j注解里的LockFailureStrategy参数(自定义lock失败处理需要自行实现LockFailureStrategy接口并声明为spring bean)
- feat: 支持声明式@Lock4j、编程式@Autowired LockTemplate
特性
- 简单易用,功能强大,扩展性强。
- 支持redission,redisTemplate,zookeeper。可混用,支持扩展。
如何使用
- 引入相关依赖。
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>lock4j-spring-boot-starter</artifactId>
<version>${version}</version>
</dependency>
<!--若使用redisTemplate作为分布式锁底层,则需要引入-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--若使用redisson作为分布式锁底层,则需要引入-->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.13.6</version>
</dependency>
<!--若使用zookeeper作为分布式锁底层,则需要引入-->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>5.1.0</version>
</dependency>
- 根据底层需要配置 redis 或zookeeper。
spring:
redis:
host: 127.0.0.1
...
coordinate:
zookeeper:
zkServers: 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
- 在需要分布式的地方使用Lock4j注解。
@Service
public class DemoService {
//默认获取锁超时3秒,30秒锁过期
@Lock4j
public void simple() {
//do something
}
//完全配置,支持spel
@Lock4j(keys = {"#user.id", "#user.name"}, expire = 60000, acquireTimeout = 1000)
public User customMethod(User user) {
return user;
}
}
高级使用
- 配置全局默认的获取锁超时时间和锁过期时间。
lock4j:
acquire-timeout: 3000 #默认值3s,可不设置
expire: 30000 #默认值30s,可不设置
primary-executor: com.baomidou.lock.executor.RedisTemplateLockExecutor #默认redisson>redisTemplate>zookeeper,可不设置
- 自定义执行器。
@Service
public class DemoService {
//可在方法级指定使用某种执行器,若自己实现的需要提前注入到Spring。
@Lock4j(executor = RedissonLockExecutor.class)
public Boolean test() {
return "true";
}
}
- 自定义锁key生成器。
<dependency> <groupId>com.baomidou</groupId> <artifactId>lock4j-spring-boot-starter</artifactId> <version>${version}</version> </dependency> <!--若使用redisTemplate作为分布式锁底层,则需要引入--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!--若使用redisson作为分布式锁底层,则需要引入--> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>3.13.6</version> </dependency> <!--若使用zookeeper作为分布式锁底层,则需要引入--> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>5.1.0</version> </dependency>
spring: redis: host: 127.0.0.1 ... coordinate: zookeeper: zkServers: 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
@Service public class DemoService { //默认获取锁超时3秒,30秒锁过期 @Lock4j public void simple() { //do something } //完全配置,支持spel @Lock4j(keys = {"#user.id", "#user.name"}, expire = 60000, acquireTimeout = 1000) public User customMethod(User user) { return user; } }
lock4j: acquire-timeout: 3000 #默认值3s,可不设置 expire: 30000 #默认值30s,可不设置 primary-executor: com.baomidou.lock.executor.RedisTemplateLockExecutor #默认redisson>redisTemplate>zookeeper,可不设置
@Service public class DemoService { //可在方法级指定使用某种执行器,若自己实现的需要提前注入到Spring。 @Lock4j(executor = RedissonLockExecutor.class) public Boolean test() { return "true"; } }
默认的锁key生成器为 com.baomidou.lock.DefaultLockKeyBuilder
。
@Component public class MyLockKeyBuilder extends DefaultLockKeyBuilder { @Override protected String getKeyPrefix() { return "myKey"; //默认是lock4j开头 } }
- 自定义锁获取失败策略。
默认的锁获取失败策略为 com.baomidou.lock.DefaultLockFailureStrategy
。
@Component
public class MyLockFailureStrategy implements LockFailureStrategy {
@Override
public void onLockFailure(String key, long acquireTimeout, int acquireCount) {
// write my code
}
}
以上所述就是小编给大家介绍的《苞米豆-lock4j 2.1.0 重磅更新,多种分布式锁同时支持》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 苞米豆-多数据源 3.3.0 重磅更新:本地多数据源事务方案
- 苞米豆 — 谷歌验证码快速启动器 1.1.0 发布
- 苞米豆-多数据源 2.4.2 发布:稳定版本 LTS
- 苞米豆-多数据源 2.4.2 发布:稳定版本 LTS
- 苞米豆-多数据源快速启动器 V1.4.0 发布
- 苞米豆-多数据源 2.3.4 发布:优化底层,支持嵌套切换
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。