001package run.iget.framework.common.config; 002 003import org.springframework.context.annotation.Bean; 004import org.springframework.context.annotation.Configuration; 005import org.springframework.data.redis.connection.RedisConnectionFactory; 006import org.springframework.data.redis.core.RedisTemplate; 007import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; 008import org.springframework.data.redis.serializer.RedisSerializer; 009 010import com.fasterxml.jackson.annotation.JsonAutoDetect; 011import com.fasterxml.jackson.annotation.PropertyAccessor; 012import com.fasterxml.jackson.databind.ObjectMapper; 013import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; 014 015/** 016 * 代码千万行,注释第一行,注释不规范,迭代两行泪 017 * ---------------类描述----------------- 018 * redis序列化配置 019 * ---------------类描述----------------- 020 * 021 * @author 大周 022 * @date 2023/5/26 21:44 023 */ 024@Configuration 025public class RedisConfig { 026 027 @Bean 028 public Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer() { 029 Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>( 030 Object.class); 031 ObjectMapper objectMapper = new ObjectMapper(); 032 objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); 033 objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL); 034 jackson2JsonRedisSerializer.setObjectMapper(objectMapper); 035 036 return jackson2JsonRedisSerializer; 037 } 038 039 @Bean 040 public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { 041 RedisTemplate<String, Object> template = new RedisTemplate<>(); 042 // Key HashKey使用String序列化 043 template.setKeySerializer(RedisSerializer.string()); 044 template.setHashKeySerializer(RedisSerializer.string()); 045 046 // Value HashValue使用Jackson2JsonRedisSerializer序列化 047 template.setValueSerializer(jackson2JsonRedisSerializer()); 048 template.setHashValueSerializer(jackson2JsonRedisSerializer()); 049 050 template.setConnectionFactory(factory); 051 return template; 052 } 053}