♻️ Refactoring code. 重构 RedisTemplate 序列化泛型

This commit is contained in:
lbw committed 2023-11-28 16:11:01 +08:00
1 parent 018768a15e
commit 93f02b9d8b
2 files changed
+9 -8

No files matched your search

@@ -25,9 +25,9 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.cloud.gateway.route.RouteDefinition;
import org.springframework.cloud.gateway.route.RouteDefinitionRepository;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.stereotype.Component;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -45,7 +45,7 @@ import java.util.List;
@RequiredArgsConstructor
public class RedisRouteDefinitionWriter implements RouteDefinitionRepository {
private final RedisTemplate redisTemplate;
private final RedisTemplate<String, String> redisTemplate;
@Override
public Mono<Void> save(Mono<RouteDefinition> route) {
@@ -53,7 +53,6 @@ public class RedisRouteDefinitionWriter implements RouteDefinitionRepository {
RouteDefinitionVo vo = new RouteDefinitionVo();
BeanUtils.copyProperties(r, vo);
log.info("保存路由信息{}", vo);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.opsForHash().put(CacheConstants.ROUTE_KEY, r.getId(), vo);
redisTemplate.convertAndSend(CacheConstants.ROUTE_JVM_RELOAD_TOPIC, "新增路由信息,网关缓存更新");
return Mono.empty();
@@ -64,7 +63,6 @@ public class RedisRouteDefinitionWriter implements RouteDefinitionRepository {
public Mono<Void> delete(Mono<String> routeId) {
routeId.subscribe(id -> {
log.info("删除路由信息{}", id);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.opsForHash().delete(CacheConstants.ROUTE_KEY, id);
});
redisTemplate.convertAndSend(CacheConstants.ROUTE_JVM_RELOAD_TOPIC, "删除路由信息,网关缓存更新");
@@ -85,9 +83,9 @@ public class RedisRouteDefinitionWriter implements RouteDefinitionRepository {
return Flux.fromIterable(routeList);
}
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(RouteDefinitionVo.class));
List<RouteDefinitionVo> values = redisTemplate.opsForHash().values(CacheConstants.ROUTE_KEY);
HashOperations<String, String, RouteDefinitionVo> stringObjectObjectHashOperations = redisTemplate.opsForHash();
List<RouteDefinitionVo> values = stringObjectObjectHashOperations.values(CacheConstants.ROUTE_KEY);
log.info("redis 中路由定义条数: {}, {}", values.size(), values);
RouteCacheHolder.setRouteList(values);
@@ -32,6 +32,7 @@ import org.springframework.cloud.gateway.handler.predicate.PredicateDefinition;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.EventListener;
import org.springframework.core.annotation.Order;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.listener.ChannelTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
@@ -53,7 +54,7 @@ import java.util.Map;
@RequiredArgsConstructor
public class DynamicRouteInitRunner implements InitializingBean {
private final RedisTemplate redisTemplate;
private final RedisTemplate<String, String> redisTemplate;
private final SysRouteConfService routeConfService;
@@ -89,8 +90,10 @@ public class DynamicRouteInitRunner implements InitializingBean {
vo.setPredicates(predicateObj.toList(PredicateDefinition.class));
vo.setMetadata(JSONUtil.toBean(route.getMetadata(), Map.class));
log.info("加载路由ID:{},{}", route.getRouteId(), vo);
redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(RouteDefinitionVo.class));
redisTemplate.opsForHash().put(CacheConstants.ROUTE_KEY, route.getRouteId(), vo);
HashOperations<String, String, RouteDefinitionVo> stringStringValueOperations = redisTemplate.opsForHash();
stringStringValueOperations.put(CacheConstants.ROUTE_KEY, route.getRouteId(), vo);
});
// 通知网关重置路由