苞米豆-lock4j 2.1.0 重磅更新,多种分布式锁同时支持

栏目: 软件资讯 · 发布时间: 3年前

内容简介:简介 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

特性

  1. 简单易用,功能强大,扩展性强。
  2. 支持redission,redisTemplate,zookeeper。可混用,支持扩展。

如何使用

  1. 引入相关依赖。
<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>
  1. 根据底层需要配置 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
  1. 在需要分布式的地方使用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;
    }

}

高级使用

  1. 配置全局默认的获取锁超时时间和锁过期时间。
lock4j:
  acquire-timeout: 3000 #默认值3s,可不设置
  expire: 30000 #默认值30s,可不设置
  primary-executor: com.baomidou.lock.executor.RedisTemplateLockExecutor #默认redisson>redisTemplate>zookeeper,可不设置
  1. 自定义执行器。
@Service
public class DemoService {
    
	//可在方法级指定使用某种执行器,若自己实现的需要提前注入到Spring。
    @Lock4j(executor = RedissonLockExecutor.class)
    public Boolean test() {
        return "true";
    }
}
  1. 自定义锁key生成器。

默认的锁key生成器为 com.baomidou.lock.DefaultLockKeyBuilder 。

@Component
public class MyLockKeyBuilder extends DefaultLockKeyBuilder {

    @Override
    protected String getKeyPrefix() {
        return "myKey"; //默认是lock4j开头
    }
}
  1. 自定义锁获取失败策略。

默认的锁获取失败策略为 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 重磅更新,多种分布式锁同时支持》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

视觉SLAM十四讲

视觉SLAM十四讲

高翔、张涛、等 / 电子工业出版社 / 2017-3 / 75

《视觉SLAM十四讲:从理论到实践》系统介绍了视觉SLAM(同时定位与地图构建)所需的基本知识与核心算法,既包括数学理论基础,如三维空间的刚体运动、非线性优化,又包括计算机视觉的算法实现,例如多视图几何、回环检测等。此外,还提供了大量的实例代码供读者学习研究,从而更深入地掌握这些内容。 《视觉SLAM十四讲:从理论到实践》可以作为对SLAM 感兴趣的研究人员的入门自学材料,也可以作为SLAM......一起来看看 《视觉SLAM十四讲》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具