From f03a337cbff5d5b0aa953d85be02d464f83c9a99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johnny=20Miller=20=28=E9=94=BA=E4=BF=8A=29?= Date: Sun, 27 Feb 2022 00:10:43 +0800 Subject: [PATCH] feat($starter): support dynamic autoconfiguration for Redis lock --- .../redis/RedisConfiguration.java | 30 +----------- .../RedisDistributedLockConfiguration.java | 46 +++++++++++++++++++ 2 files changed, 48 insertions(+), 28 deletions(-) create mode 100644 spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/redis/RedisDistributedLockConfiguration.java diff --git a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/redis/RedisConfiguration.java b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/redis/RedisConfiguration.java index 76b857ca..003bee04 100644 --- a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/redis/RedisConfiguration.java +++ b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/redis/RedisConfiguration.java @@ -22,7 +22,6 @@ import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; -import org.springframework.integration.redis.util.RedisLockRegistry; /** * Description: RedisConfiguration, change description here. @@ -35,11 +34,11 @@ RedisMasterSlaveReplicationProperties.class }) @Import({ - RedisCachingConfiguration.class + RedisCachingConfiguration.class, + RedisDistributedLockConfiguration.class }) @ConditionalOnClass({RedisConnectionFactory.class}) public class RedisConfiguration { - private static final String REGISTRY_KEY = "redis-lock"; private final RedisMasterSlaveReplicationProperties redisMasterSlaveReplicationProperties; private final ObjectMapper objectMapper; @@ -125,29 +124,4 @@ ReactiveRedisTemplate reactiveRedisTemplate(ReactiveRedisConnect .build(); return new ReactiveRedisTemplate<>(connectionFactory, serializationContext); } - - /** - * Redis distributed lock registry. - * - * @param redisConnectionFactory the redis connection factory - * @return the redis lock registry - * @see - * Redis Lock Registry - */ - @Bean(destroyMethod = "destroy") - @ConditionalOnClass({RedisLockRegistry.class}) - public RedisLockRegistry redisLockRegistry(RedisConnectionFactory redisConnectionFactory) { - val redisLockRegistry = new RedisLockRegistry(redisConnectionFactory, REGISTRY_KEY); - log.warn("RedisLockRegistry bean is created. {}", redisLockRegistry); - return redisLockRegistry; - } - - @Bean - @ConditionalOnClass({RedisLockRegistry.class}) - public RedisDistributedLockDemoController redisDistributedLockDemoController( - RedisLockRegistry redisLockRegistry - ) { - log.warn("RedisDistributedLockDemoController is created"); - return new RedisDistributedLockDemoController(redisLockRegistry); - } } diff --git a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/redis/RedisDistributedLockConfiguration.java b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/redis/RedisDistributedLockConfiguration.java new file mode 100644 index 00000000..26e99e49 --- /dev/null +++ b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/redis/RedisDistributedLockConfiguration.java @@ -0,0 +1,46 @@ +package com.jmsoftware.maf.springcloudstarter.redis; + +import lombok.extern.slf4j.Slf4j; +import lombok.val; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.context.annotation.Bean; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.integration.redis.util.RedisLockRegistry; + +/** + *

RedisDistributedLockConfiguration

+ *

+ * Change description here. + * + * @author Johnny Miller (鍾俊), email: johnnysviva@outlook.com, 2/26/22 11:19 PM + **/ +@Slf4j +@ConditionalOnClass({RedisLockRegistry.class}) +public class RedisDistributedLockConfiguration { + private static final String REGISTRY_KEY = "redis-lock"; + + /** + * Redis distributed lock registry. + * + * @param redisConnectionFactory the redis connection factory + * @return the redis lock registry + * @see + * Redis Lock Registry + */ + @Bean(destroyMethod = "destroy") + @ConditionalOnClass({RedisLockRegistry.class}) + public RedisLockRegistry redisLockRegistry(RedisConnectionFactory redisConnectionFactory) { + val redisLockRegistry = new RedisLockRegistry(redisConnectionFactory, REGISTRY_KEY); + log.warn("RedisLockRegistry bean is created. {}", redisLockRegistry); + return redisLockRegistry; + } + + @Bean + @ConditionalOnClass({RedisLockRegistry.class}) + public RedisDistributedLockDemoController redisDistributedLockDemoController( + RedisLockRegistry redisLockRegistry + ) { + log.warn("RedisDistributedLockDemoController is created"); + return new RedisDistributedLockDemoController(redisLockRegistry); + } +}