SpringBoot中Redis解决LocalDateTime序列化与反序列化不一致问题

 前言

        在SpringBoot应用中,数据的序列化和反序列化是关键环节。然而,对于LocalDateTime类型的数据,有时会遇到序列化与反序列化不一致的问题。这主要是由于不同的时区或格式差异所导致。为了解决这一问题,我们可以借助Redis的强大功能。Redis提供了日期和时间的序列化和反序列化方法,确保了在不同环境下的数据一致性。通过配置合理的序列化策略,我们能够确保LocalDateTime数据在SpringBoot应用中的准确处理。这样,无论在存储、传输还是处理数据时,都能够确保数据的一致性和准确性。

一、Redis配置类

        只需配置以下配置即可解决LocalDateTime序列化与反序列化不一致问题

@Configuration
public class RedisConfig {

	@Bean
	public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
		RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
		redisTemplate.setConnectionFactory(factory);
		Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
		ObjectMapper mapper = new ObjectMapper();
		mapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
		jackson2JsonRedisSerializer.setObjectMapper(mapper);
		StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
		redisTemplate.setKeySerializer(stringRedisSerializer);
		redisTemplate.setHashKeySerializer(stringRedisSerializer);
		redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
		redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
		redisTemplate.afterPropertiesSet();

		//下面代码解决LocalDateTime序列化与反序列化不一致问题
		Jackson2JsonRedisSerializer<Object> j2jrs = new Jackson2JsonRedisSerializer<>(Object.class);
		ObjectMapper om = new ObjectMapper();
		om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
		// 解决jackson2无法反序列化LocalDateTime的问题
		om.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
		om.registerModule(new JavaTimeModule());om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);j2jrs.setObjectMapper(om);
		// 序列化 value 时使用此序列化方法
		redisTemplate.setValueSerializer(j2jrs);
		redisTemplate.setHashValueSerializer(j2jrs);
		return redisTemplate;
	}
}

相关推荐

  1. Springboot Jackson 序列序列配置

    2024-01-26 10:56:01       33 阅读
  2. 在php序列序列

    2024-01-26 10:56:01       9 阅读
  3. 序列序列

    2024-01-26 10:56:01       28 阅读
  4. C++序列序列

    2024-01-26 10:56:01       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-26 10:56:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-26 10:56:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-26 10:56:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-26 10:56:01       18 阅读

热门阅读

  1. XGBoost系列8——XGBoost的未来:从强化学习到AutoML

    2024-01-26 10:56:01       34 阅读
  2. Android 通知栏使用总结

    2024-01-26 10:56:01       33 阅读
  3. IPQ5018: Low-Cost OFDMA Supported WiFi 6 IIoT Solution DR5018

    2024-01-26 10:56:01       29 阅读
  4. 演讲比赛流程管理系统代码示例

    2024-01-26 10:56:01       33 阅读
  5. 蒙特卡洛模拟之逆变换法

    2024-01-26 10:56:01       35 阅读