jackson.ObjectMapper里的一个enableDefaultTyping方法过期

jackson.ObjectMapper里的一个enableDefaultTyping方法过期了,项目每次编译时提示,同时过期可能是有漏洞或者效率太低了,总而言之最好处理下

看了下网上也没有解决方案,我这边记录下解决方案。

最好的解决办法就是看过期方法的源码,一般过期方法会给出新的方法来替换过期方法的说明

可以看到@link 里已经给出了这个说明。

我这边修改的:

        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        //om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance , 
        ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
        jackson2JsonRedisSerializer.setObjectMapper(om);


 

@Configuration \npublic class RedisConfig { \n // 定义一个Bean,名称为\"redisTemplate\",返回类型为RedisTemplate\u003CString, Object> \n @Bean(name = \"redisTemplate\") \n public RedisTemplate\u003CString, Object> getRedisTemplate(RedisConnectionFactory factory) { \n // 创建一个新的RedisTemplate实例,用于操作Redis \n RedisTemplate\u003CString, Object> redisTemplate = new RedisTemplate\u003CString, Object>(); \n // 设置RedisTemplate使用的连接工厂,以便它能够连接到Redis服务器 \n redisTemplate.setConnectionFactory(factory); \n \n // 创建一个StringRedisSerializer实例,用于序列化Redis的key为字符串 \n StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); \n \n \n // 创建一个ObjectMapper实例,用于处理JSON的序列化和反序列化 \n ObjectMapper objectMapper = new ObjectMapper(); \n \n // 设置ObjectMapper的属性访问级别,以便能够序列化对象的所有属性 \n objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); \n \n // 启用默认的类型信息,以便在反序列化时能够知道对象的实际类型 \n // 注意:这使用了新的方法替换了过期enableDefaultTyping方法 \n // 方法过期,改为下面代码 \n // objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); \n objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, \n ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); \n\n // 创建一个Jackson2JsonRedisSerializer实例,用于序列化Redis的value为JSON格式 \n Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); \n // 设置Jackson2JsonRedisSerializer使用的ObjectMapper \n jackson2JsonRedisSerializer.setObjectMapper(objectMapper); \n\n \n // 设置RedisTemplate的key序列化器为stringRedisSerializer \n redisTemplate.setKeySerializer(stringRedisSerializer); // key的序列化类型 \n // 设置RedisTemplate的value序列化器为jackson2JsonRedisSerializer \n redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); // value的序列化类型 \n \n // 设置RedisTemplate的hash key序列化器为stringRedisSerializer \n redisTemplate.setHashKeySerializer(stringRedisSerializer); // key的序列化类型 \n // 设置RedisTemplate的hash value序列化器为jackson2JsonRedisSerializer \n redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); // value的序列化类型 \n \n // 调用RedisTemplate的afterPropertiesSet方法,该方法会执行一些初始化操作,比如检查序列化器是否设置等 \n redisTemplate.afterPropertiesSet(); \n \n // 返回配置好的RedisTemplate实例 \n return redisTemplate; \n }
最新发布
09-25
// 创建一个新的RedisTemplate实例,用于操作Redis RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>(); // 设置RedisTemplate使用的连接工厂,以便它能够连接到Redis服务器 redisTemplate.setConnectionFactory(factory); // 创建一个StringRedisSerializer实例,用于序列化Redis的key为字符串 StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); // 创建一个ObjectMapper实例,用于处理JSON的序列化和反序列化 ObjectMapper objectMapper = new ObjectMapper(); // 设置ObjectMapper的属性访问级别,以便能够序列化对象的所有属性 objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); // 启用默认的类型信息,以便在反序列化时能够知道对象的实际类型 // 注意:这使用了新的方法替换了过期enableDefaultTyping方法 // 方法过期,改为下面代码 // objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(objectMapper, Object.class); // 设置RedisTemplate的key序列化器为stringRedisSerializer redisTemplate.setKeySerializer(stringRedisSerializer); // key的序列化类型 // 设置RedisTemplate的value序列化器为jackson2JsonRedisSerializer redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); // value的序列化类型 // 设置RedisTemplate的hash key序列化器为stringRedisSerializer redisTemplate.setHashKeySerializer(stringRedisSerializer); // key的序列化类型 // 设置RedisTemplate的hash value序列化器为jackson2JsonRedisSerializer redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); // value的序列化类型 // 调用RedisTemplate的afterPropertiesSet方法,该方法会执行一些初始化操作,比如检查序列化器是否设置等 redisTemplate.afterPropertiesSet();
07-25
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值