18 changed files with 46 additions and 54 deletions
@ -1,32 +1,58 @@ |
|||
package org.dromara.im.config; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonAutoDetect; |
|||
import com.fasterxml.jackson.annotation.JsonInclude; |
|||
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.SerializationFeature; |
|||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; |
|||
import lombok.AllArgsConstructor; |
|||
import org.springframework.cache.CacheManager; |
|||
import org.springframework.cache.annotation.CachingConfigurerSupport; |
|||
import org.springframework.cache.annotation.EnableCaching; |
|||
import org.springframework.context.annotation.Bean; |
|||
import org.springframework.context.annotation.Configuration; |
|||
import org.springframework.data.redis.cache.RedisCacheConfiguration; |
|||
import org.springframework.data.redis.cache.RedisCacheManager; |
|||
import org.springframework.data.redis.connection.RedisConnectionFactory; |
|||
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; |
|||
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; |
|||
import org.springframework.data.redis.serializer.RedisSerializationContext; |
|||
|
|||
import java.time.Duration; |
|||
|
|||
@Configuration |
|||
@EnableCaching |
|||
@AllArgsConstructor |
|||
public class ImCacheConfig extends CachingConfigurerSupport { |
|||
|
|||
public final static String REDIS_CACHE_MANAGER = "redisCacheManager"; |
|||
|
|||
private final RedisConnectionFactory factory; |
|||
|
|||
private final GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer; |
|||
|
|||
@Bean |
|||
@Bean(REDIS_CACHE_MANAGER) |
|||
public CacheManager cacheManager() { |
|||
// 设置redis缓存管理器
|
|||
RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(600)) |
|||
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)); |
|||
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer())); |
|||
return RedisCacheManager.builder(factory).cacheDefaults(cacheConfiguration).build(); |
|||
} |
|||
|
|||
|
|||
@Bean |
|||
public Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer() { |
|||
ObjectMapper om = new ObjectMapper(); |
|||
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); |
|||
// 解决jackson2无法反序列化LocalDateTime的问题
|
|||
om.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); |
|||
om.registerModule(new JavaTimeModule()); |
|||
om.setSerializationInclusion(JsonInclude.Include.NON_NULL); // 忽略空值
|
|||
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); |
|||
//忽略无效字段
|
|||
om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); |
|||
return new Jackson2JsonRedisSerializer<>(om, Object.class); |
|||
} |
|||
|
|||
} |
|||
|
|||
Loading…
Reference in new issue