From 0d8036f80d00676d20944e2a964b9eae152c5720 Mon Sep 17 00:00:00 2001 From: JEECG <445654970@qq.com> Date: Mon, 1 Sep 2025 19:48:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96redis=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/jmreport/config/RedisConfig.java | 45 ++++++++++++++----- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/jimureport-example/src/main/java/com/jeecg/modules/jmreport/config/RedisConfig.java b/jimureport-example/src/main/java/com/jeecg/modules/jmreport/config/RedisConfig.java index e353563..46860a6 100644 --- a/jimureport-example/src/main/java/com/jeecg/modules/jmreport/config/RedisConfig.java +++ b/jimureport-example/src/main/java/com/jeecg/modules/jmreport/config/RedisConfig.java @@ -1,11 +1,17 @@ package com.jeecg.modules.jmreport.config; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; +import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; /** * RedisTemplate实例化 @@ -15,16 +21,33 @@ import org.springframework.data.redis.core.RedisTemplate; @ConditionalOnMissingBean(RedisTemplate.class) public class RedisConfig { - @Bean - JedisConnectionFactory jedisConnectionFactory() { - return new JedisConnectionFactory(); + @ConditionalOnMissingBean(RedisTemplate.class) + public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) { + log.info(" --- JmDrag redis config init (主redisTemplate不存在,创建备用RedisTemplate) --- "); + Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = jacksonSerializer(); + RedisTemplate redisTemplate = new RedisTemplate<>(); + redisTemplate.setConnectionFactory(connectionFactory); + RedisSerializer stringSerializer = new StringRedisSerializer(); + + // key序列化 + redisTemplate.setKeySerializer(stringSerializer); + // value序列化 + redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); + // Hash key序列化 + redisTemplate.setHashKeySerializer(stringSerializer); + // Hash value序列化 + redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); + redisTemplate.afterPropertiesSet(); + return redisTemplate; } - @Bean - public RedisTemplate redisTemplate() { - log.info("---- jimubi Redis Template init----"); - RedisTemplate template = new RedisTemplate<>(); - template.setConnectionFactory(jedisConnectionFactory()); - return template; + private Jackson2JsonRedisSerializer jacksonSerializer() { + Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + // 使用新的替代方法,避免已废弃的enableDefaultTyping + objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL); + jackson2JsonRedisSerializer.setObjectMapper(objectMapper); + return jackson2JsonRedisSerializer; } }