|
@@ -5,6 +5,8 @@ import com.fasterxml.jackson.databind.SerializationFeature;
|
|
|
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
|
|
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
|
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
|
|
import org.springframework.cache.CacheManager;
|
|
@@ -31,9 +33,10 @@ public class LettuceRedisConfig {
|
|
|
|
|
|
private static final StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
|
|
|
|
|
|
- private static Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer ;
|
|
|
+ private static final Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer ;
|
|
|
|
|
|
static {
|
|
|
+ jackson2JsonRedisSerializer= new Jackson2JsonRedisSerializer<>(Object.class);
|
|
|
//解决value的序列化方式
|
|
|
//序列化时将类的数据类型存入json,以便反序列化的时候转换成正确的类型
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
@@ -45,8 +48,30 @@ public class LettuceRedisConfig {
|
|
|
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
|
|
|
}
|
|
|
|
|
|
+ @Bean(name = "stringRedisSerializer")
|
|
|
+ private StringRedisSerializer stringRedisSerializer(){
|
|
|
+ return new StringRedisSerializer() ;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Bean(name = "jackson2JsonRedisSerializer")
|
|
|
+ private Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer(){
|
|
|
+ Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer= new Jackson2JsonRedisSerializer<>(Object.class);
|
|
|
+ //解决value的序列化方式
|
|
|
+ //序列化时将类的数据类型存入json,以便反序列化的时候转换成正确的类型
|
|
|
+ ObjectMapper objectMapper = new ObjectMapper();
|
|
|
+ //objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
|
|
|
+ objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);
|
|
|
+ // 解决jackson2无法反序列化LocalDateTime的问题
|
|
|
+ objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
|
|
+ objectMapper.registerModule(new JavaTimeModule());
|
|
|
+ jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
|
|
|
+ return jackson2JsonRedisSerializer ;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@Bean
|
|
|
- public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory connectionFactory) {
|
|
|
+ public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory connectionFactory, StringRedisSerializer stringRedisSerializer, Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer) {
|
|
|
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
|
|
|
redisTemplate.setConnectionFactory(connectionFactory);
|
|
|
//首先解决key的序列化方式
|