51 lines
2.1 KiB
Java
51 lines
2.1 KiB
Java
package com.ycwl.basic.config;
|
|
|
|
import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
|
import com.fasterxml.jackson.annotation.PropertyAccessor;
|
|
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;
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
@Configuration
|
|
public class RedisConfig {
|
|
|
|
@Resource
|
|
private RedisConnectionFactory redisConnectionFactory;
|
|
|
|
@Bean
|
|
public RedisTemplate<Object, Object> redisTemplate() {
|
|
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
|
|
redisTemplate.setConnectionFactory(redisConnectionFactory);
|
|
|
|
// 使用Jackson2JsonRedisSerialize 替换默认序列化
|
|
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
|
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
|
|
objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);
|
|
|
|
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
|
|
|
|
// 设置value的序列化规则和 key的序列化规则
|
|
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
|
|
redisTemplate.setKeySerializer(new StringRedisSerializer());
|
|
|
|
redisTemplate.setHashKeySerializer(jackson2JsonRedisSerializer);
|
|
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
|
|
|
|
redisTemplate.setDefaultSerializer(jackson2JsonRedisSerializer);
|
|
redisTemplate.setEnableDefaultSerializer(true);
|
|
redisTemplate.afterPropertiesSet();
|
|
|
|
return redisTemplate;
|
|
}
|
|
|
|
}
|