18 changed files with 46 additions and 54 deletions
@ -1,32 +1,58 @@ |
|||||
package org.dromara.im.config; |
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 lombok.AllArgsConstructor; |
||||
import org.springframework.cache.CacheManager; |
import org.springframework.cache.CacheManager; |
||||
import org.springframework.cache.annotation.CachingConfigurerSupport; |
import org.springframework.cache.annotation.CachingConfigurerSupport; |
||||
import org.springframework.cache.annotation.EnableCaching; |
import org.springframework.cache.annotation.EnableCaching; |
||||
import org.springframework.context.annotation.Bean; |
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.RedisCacheConfiguration; |
||||
import org.springframework.data.redis.cache.RedisCacheManager; |
import org.springframework.data.redis.cache.RedisCacheManager; |
||||
import org.springframework.data.redis.connection.RedisConnectionFactory; |
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 org.springframework.data.redis.serializer.RedisSerializationContext; |
||||
|
|
||||
import java.time.Duration; |
import java.time.Duration; |
||||
|
|
||||
|
@Configuration |
||||
@EnableCaching |
@EnableCaching |
||||
@AllArgsConstructor |
@AllArgsConstructor |
||||
public class ImCacheConfig extends CachingConfigurerSupport { |
public class ImCacheConfig extends CachingConfigurerSupport { |
||||
|
|
||||
|
public final static String REDIS_CACHE_MANAGER = "redisCacheManager"; |
||||
|
|
||||
private final RedisConnectionFactory factory; |
private final RedisConnectionFactory factory; |
||||
|
|
||||
private final GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer; |
|
||||
|
|
||||
@Bean |
@Bean(REDIS_CACHE_MANAGER) |
||||
public CacheManager cacheManager() { |
public CacheManager cacheManager() { |
||||
// 设置redis缓存管理器
|
// 设置redis缓存管理器
|
||||
RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(600)) |
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(); |
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