Skip to content

Commit

Permalink
feat($starter): support dynamic autoconfiguration for Redis lock
Browse files Browse the repository at this point in the history
  • Loading branch information
johnnymillergh committed Feb 26, 2022
1 parent 2e0ce94 commit f03a337
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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;

Expand Down Expand Up @@ -125,29 +124,4 @@ ReactiveRedisTemplate<Object, Object> reactiveRedisTemplate(ReactiveRedisConnect
.build();
return new ReactiveRedisTemplate<>(connectionFactory, serializationContext);
}

/**
* Redis distributed lock registry.
*
* @param redisConnectionFactory the redis connection factory
* @return the redis lock registry
* @see
* <a href='https://docs.spring.io/spring-integration/docs/current/reference/html/redis.html#redis-lock-registry'>Redis Lock Registry</a>
*/
@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);
}
}
Original file line number Diff line number Diff line change
@@ -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;

/**
* <h1>RedisDistributedLockConfiguration</h1>
* <p>
* 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
* <a href='https://docs.spring.io/spring-integration/docs/current/reference/html/redis.html#redis-lock-registry'>Redis Lock Registry</a>
*/
@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);
}
}

0 comments on commit f03a337

Please sign in to comment.