- 51
- 0
-
在使用redis时, redis 序列化出错
Could not read JSON: Can not construct instance of com.xxx.xxx.controller.TestObj: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?) -
我使用了
<!-- json serialization --> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-parameter-names</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jdk8</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> </dependency>
redis 的配置:
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(
Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
om.registerModule(new ParameterNamesModule())
.registerModule(new Jdk8Module())
.registerModule(new JavaTimeModule());
om.findAndRegisterModules();
jackson2JsonRedisSerializer.setObjectMapper(om);
template.setKeySerializer(new GenericToStringSerializer<Object>(Object.class));
template.setHashKeySerializer(new GenericToStringSerializer<Object>(Object.class));
template.setValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
但是没有什么效果,序列化出来的字符串没有类型信息, 无法反序列化
如何实现redis的 RedisSerializer 接口?
- 共 0 条
- 全部回答
-
liQvQil 普通会员 1楼
在Java 8中,
LocalDate和LocalDateTime提供了日期和时间的本地化功能,这使得Java应用程序在处理日期和时间时具有更好的可读性和可维护性。然而,如果你在使用这些日期和时间类型时遇到问题,可能有以下原因:
-
缺乏兼容性:不同的日期和时间格式可能会导致问题。例如,如果你在处理Java 7和更高版本的Java时使用
LocalDate和LocalDateTime,可能会遇到问题,因为这些日期和时间类型在Java 7中已被弃用。 -
实际使用场景:在实际使用中,你可能不需要所有日期和时间类型。例如,如果你只关心日期,你可能只需要
LocalDate。如果你只关心时间,你可能只需要LocalDateTime。在这种情况下,你可能需要决定使用哪种类型。 -
编程风格:在编程风格上,使用
LocalDate和LocalDateTime可能会有不同的感觉。如果你更倾向于使用Java 8的编程风格,你可能会选择使用LocalDate和LocalDateTime。如果你更倾向于使用Java 7的编程风格,你可能会选择使用java.time.LocalDate和java.time.LocalDateTime。
总的来说,
LocalDate和LocalDateTime在Java 8中提供了很好的日期和时间本地化功能,但你需要根据你的实际需求和编程风格来决定是否使用它们。 -
-
颠覆你的高傲 普通会员 2楼
在Java 8中,
LocalDate和LocalDateTime提供了日期和时间的本地化功能,这使得Java应用程序在处理日期和时间时具有更好的可读性和可维护性。然而,如果你在使用这些日期和时间类型时遇到问题,可能有以下原因:
-
缺乏兼容性:不同的日期和时间格式可能会导致问题。例如,如果你在处理Java 7和更高版本的Java时使用
LocalDate和LocalDateTime,可能会遇到问题,因为这些日期和时间类型在Java 7中已被弃用。 -
实际使用场景:在实际使用中,你可能不需要所有日期和时间类型。例如,如果你只关心日期,你可能只需要
LocalDate。如果你只关心时间,你可能只需要LocalDateTime。在这种情况下,你可能需要决定使用哪种类型。 -
编程风格:在编程风格上,使用
LocalDate和LocalDateTime可能会有不同的感觉。如果你更倾向于使用Java 8的编程风格,你可能会选择使用LocalDate和LocalDateTime。如果你更倾向于使用Java 7的编程风格,你可能会选择使用java.time.LocalDate和java.time.LocalDateTime。
总的来说,
LocalDate和LocalDateTime在Java 8中提供了很好的日期和时间本地化功能,但你需要根据你的实际需求和编程风格来决定是否使用它们。 -
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
