From cacb22a7bd7060a4330f7f8537b2d20586a9f183 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 28 Nov 2025 12:58:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(cache):=20=E9=85=8D=E7=BD=AERedis=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E7=AE=A1=E7=90=86=E5=99=A8=E4=BB=A5=E6=94=AF=E6=8C=81?= =?UTF-8?q?Java=E6=97=B6=E9=97=B4=E5=BA=8F=E5=88=97=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加Jackson ObjectMapper和JavaTimeModule依赖 - 配置RedisCacheConfiguration使用Jackson2JsonRedisSerializer序列化值 - 在RedisTemplate中设置值和哈希值的序列化器为Jackson2JsonRedisSerializer - 启用对LocalDateTime等Java 8时间类型的序列化支持 --- .../basic/config/CustomRedisCacheManager.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/ycwl/basic/config/CustomRedisCacheManager.java b/src/main/java/com/ycwl/basic/config/CustomRedisCacheManager.java index 69ebc4eb..6c70b0f2 100644 --- a/src/main/java/com/ycwl/basic/config/CustomRedisCacheManager.java +++ b/src/main/java/com/ycwl/basic/config/CustomRedisCacheManager.java @@ -1,5 +1,7 @@ package com.ycwl.basic.config; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; @@ -24,7 +26,10 @@ public class CustomRedisCacheManager extends CachingConfigurerSupport { @Bean public RedisCacheConfiguration redisCacheConfiguration() { - Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); + Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(objectMapper, Object.class); + RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig(); configuration = configuration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)).entryTtl(Duration.ofMinutes(1)); return configuration; @@ -45,10 +50,16 @@ public class CustomRedisCacheManager extends CachingConfigurerSupport { final StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); redisTemplate.setKeySerializer(stringRedisSerializer); - redisTemplate.setValueSerializer(stringRedisSerializer); - redisTemplate.setHashKeySerializer(stringRedisSerializer); + // Configure Jackson2JsonRedisSerializer with JavaTimeModule for value serialization + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); + Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(objectMapper, Object.class); + + redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); + redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); + redisTemplate.afterPropertiesSet(); return redisTemplate; }