You've already forked FrameTour-BE
feat(cache): 配置Redis缓存管理器以支持Java时间序列化
- 添加Jackson ObjectMapper和JavaTimeModule依赖 - 配置RedisCacheConfiguration使用Jackson2JsonRedisSerializer序列化值 - 在RedisTemplate中设置值和哈希值的序列化器为Jackson2JsonRedisSerializer - 启用对LocalDateTime等Java 8时间类型的序列化支持
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
package com.ycwl.basic.config;
|
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.CachingConfigurerSupport;
|
||||||
import org.springframework.cache.annotation.EnableCaching;
|
import org.springframework.cache.annotation.EnableCaching;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
@@ -24,7 +26,10 @@ public class CustomRedisCacheManager extends CachingConfigurerSupport {
|
|||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public RedisCacheConfiguration redisCacheConfiguration() {
|
public RedisCacheConfiguration redisCacheConfiguration() {
|
||||||
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
objectMapper.registerModule(new JavaTimeModule());
|
||||||
|
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(objectMapper, Object.class);
|
||||||
|
|
||||||
RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig();
|
RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig();
|
||||||
configuration = configuration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)).entryTtl(Duration.ofMinutes(1));
|
configuration = configuration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)).entryTtl(Duration.ofMinutes(1));
|
||||||
return configuration;
|
return configuration;
|
||||||
@@ -45,10 +50,16 @@ public class CustomRedisCacheManager extends CachingConfigurerSupport {
|
|||||||
|
|
||||||
final StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
|
final StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
|
||||||
redisTemplate.setKeySerializer(stringRedisSerializer);
|
redisTemplate.setKeySerializer(stringRedisSerializer);
|
||||||
redisTemplate.setValueSerializer(stringRedisSerializer);
|
|
||||||
|
|
||||||
redisTemplate.setHashKeySerializer(stringRedisSerializer);
|
redisTemplate.setHashKeySerializer(stringRedisSerializer);
|
||||||
|
|
||||||
|
// Configure Jackson2JsonRedisSerializer with JavaTimeModule for value serialization
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
objectMapper.registerModule(new JavaTimeModule());
|
||||||
|
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(objectMapper, Object.class);
|
||||||
|
|
||||||
|
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
|
||||||
|
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
|
||||||
|
|
||||||
redisTemplate.afterPropertiesSet();
|
redisTemplate.afterPropertiesSet();
|
||||||
return redisTemplate;
|
return redisTemplate;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user