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; } }