package com.dji.sample.component.redis;
|
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
import com.fasterxml.jackson.databind.MapperFeature;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
|
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
|
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.repository.configuration.EnableRedisRepositories;
|
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
|
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
|
/**
|
* @author sean
|
* @version 1.0
|
* @date 2022/4/19
|
*/
|
@Configuration
|
@EnableRedisRepositories
|
public class RedisConfiguration {
|
|
@Bean
|
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
|
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
|
redisTemplate.setConnectionFactory(factory);
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
JavaTimeModule timeModule = new JavaTimeModule();
|
timeModule.addDeserializer(LocalDateTime.class,
|
new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
timeModule.addSerializer(LocalDateTime.class,
|
new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
objectMapper.disable(MapperFeature.IGNORE_DUPLICATE_MODULE_REGISTRATIONS);
|
objectMapper.registerModules(timeModule);
|
objectMapper.activateDefaultTyping(objectMapper.getPolymorphicTypeValidator(),
|
ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
|
|
objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
|
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
|
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
|
|
|
StringRedisSerializer serializer = new StringRedisSerializer();
|
redisTemplate.setKeySerializer(serializer);
|
redisTemplate.setHashKeySerializer(serializer);
|
|
GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer(objectMapper);
|
redisTemplate.setValueSerializer(jsonRedisSerializer);
|
redisTemplate.setHashValueSerializer(jsonRedisSerializer);
|
redisTemplate.afterPropertiesSet();
|
return redisTemplate;
|
|
}
|
}
|