内容简介:简介 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 发布:优化底层,支持嵌套切换
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Algorithms Unlocked
Thomas H. Cormen / The MIT Press / 2013-3-1 / USD 25.00
Have you ever wondered how your GPS can find the fastest way to your destination, selecting one route from seemingly countless possibilities in mere seconds? How your credit card account number is pro......一起来看看 《Algorithms Unlocked》 这本书的介绍吧!