Redisson自定义注解结合Spring Boot Starter实现自动化配置,核心是通过@DistributedLock声明锁行为、AOP切面拦截执行加解锁、Starter自动装配RedissonClient与切面Bean,并支持SpEL动态生成key、多模式配置及IDE配置提示。
Redisson 自定义注解结合 Spring Boot Starter 实现自动化配置,核心在于:注解声明行为、切面拦截执行、自动装配支撑、配置可扩展。整个流程不依赖手动 Bean 注册,而是由 Starter 统一完成初始化与织入。
定义一个运行时保留的注解,支持参数化控制锁名、超时、等待时间等:
"#id" 或 "order:#order.id" 等方式从方法参数提取切面需依赖已自动注入的 RedissonClient,不能自己 new 或重复创建客户端:
StandardEvaluationContext)计算最终 lockKeyredissonClient.getLock(key).tryLock(waitTime, leaseTime, TimeUnit.SECONDS)
DistributedLockException),成功则放行;方法结束或异常时确保 unlock在自定义 Starter 的自动配置类中,统一注册关键 Bean:
立即学习“Java免费学习笔记(深入)”;
@ConditionalOnMissingBean 保护,支持单机/集群/哨兵等模式,读取 spring.redisson.* 或自定义前缀(如 bobo.redisson.*)配置@Bean,构造时注入 RedissonClient,无需额外条件(只要 Client 存在就启用)@Order(Ordered.HIGHEST_PRECEDENCE + 10) 避免与其他 AOP 冲突(如事务切面)让注解能力开箱即用,还需配套配置支持:
META-INF/additional-spring-configuration-metadata.json 中声明 spring.redisson.* 属性,使 IDE 显示提示redisson.yml 单独存放复杂 Config 结构,再通过 spring.config.import=redisson.yml 引入)spring.redis.database 与 Redisson 的 setDatabase() 是否一致,避免 key 冲突