redis序列化,setObjectMapper报已过期,如何更改

1,326 阅读1分钟

redis在进行序列化时setObjectMapper已过期,但是其源码中没有指出新的方法,这个如何修改,有知道的吗各位大哥? pom文件如下

<?xml version="1.0" encoding="UTF-8"?>  
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">  
<modelVersion>4.0.0</modelVersion>  
<parent>  
<groupId>com.xjc</groupId>  
<artifactId>basic</artifactId>  
<version>0.0.1-SNAPSHOT</version>  
</parent>  
  
<artifactId>common</artifactId>  
<version>0.0.1-SNAPSHOT</version>  
<name>basic-common</name>  
<description>basic-common</description>  
<properties>  
<java.version>17</java.version>  
</properties>  
<dependencies>  
<!-- 集成redis依赖 -->  
<dependency>  
<groupId>org.springframework.boot</groupId>  
<artifactId>spring-boot-starter-data-redis</artifactId>  
</dependency>  
<!-- https://mvnrepository.com/artifact/com.alibaba.fastjson2/fastjson2 -->  
<dependency>  
<groupId>com.alibaba.fastjson2</groupId>  
<artifactId>fastjson2</artifactId>  
<version>2.0.29</version>  
</dependency>  
  
</dependencies>  
  
<build>  
<plugins>  
<plugin>  
<groupId>org.springframework.boot</groupId>  
<artifactId>spring-boot-maven-plugin</artifactId>  
</plugin>  
</plugins>  
</build>  
  
</project>

配置文件如下

#redis配置  
spring:  
data:  
redis:  
host: 127.0.0.1  
port: 6379  
connect-timeout: 10000  
password:  
  
lettuce:  
pool:  
max-idle: 16  
max-active: 32  
min-idle: 8  
devtools:  
restart:  
enabled: true

redisconfig配置文件如下

package com.xjc.common.config;  
  
import com.fasterxml.jackson.annotation.JsonAutoDetect;  
import com.fasterxml.jackson.annotation.JsonTypeInfo;  
import com.fasterxml.jackson.annotation.PropertyAccessor;  
import com.fasterxml.jackson.databind.DeserializationFeature;  
import com.fasterxml.jackson.databind.ObjectMapper;  
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;  
import org.springframework.context.annotation.Bean;  
import org.springframework.context.annotation.Configuration;  
import org.springframework.data.redis.connection.RedisConnectionFactory;  
import org.springframework.data.redis.core.RedisTemplate;  
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;  
import org.springframework.data.redis.serializer.StringRedisSerializer;  
  
/**  
* @ClassName com.xjc.common.config  
* @Author bill  
* @Describe redis配置  
* @Date 2023/4/23 15:14  
*/  
@Configuration  
public class RedisConfig {  
/**  
* RedisTemplate配置  
*/  
@Bean  
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {  
// 配置redisTemplate  
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();  
redisTemplate.setConnectionFactory(redisConnectionFactory);  
// 设置序列化  
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);  
  
ObjectMapper om = new ObjectMapper();  
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);  
om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);  
om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);  
jackson2JsonRedisSerializer.setObjectMapper(om);  
// key序列化  
redisTemplate.setKeySerializer(new StringRedisSerializer());  
// value序列化  
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);  
// Hash key序列化  
redisTemplate.setHashKeySerializer(new StringRedisSerializer());  
// Hash value序列化  
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);  
redisTemplate.afterPropertiesSet();  
return redisTemplate;  
}  
  
}

image.png 这个RedisConfig中的setObjectMapper报已过期,如何更改?