自己做单词卡的网站是什么,做和别人类似的网站侵权吗,打车软件app开发,现在有哪些培训学校问题现象
在参考网上的Redis集成后#xff0c;配置了RedisTemplate的序列化#xff0c;配置成功后Cacheable注解的缓存仍然是jdk的序列化#xff0c;配置无效。
参考配置的类似代码#xff1a;
Bean(redisTemplate)
public RedisTemplateObject, Objec…问题现象
在参考网上的Redis集成后配置了RedisTemplate的序列化配置成功后Cacheable注解的缓存仍然是jdk的序列化配置无效。
参考配置的类似代码
Bean(redisTemplate)
public RedisTemplateObject, Object redisTemplate(RedisConnectionFactory connectionFactory) {RedisTemplateObject, Object redisTemplate new RedisTemplate();redisTemplate.setConnectionFactory(connectionFactory);var jackson2JsonRedisSerializer getJackson2JsonRedisSerializer();// 设置value的序列化规则和key的序列化规则redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);redisTemplate.afterPropertiesSet();return redisTemplate;}
public static GenericJackson2JsonRedisSerializer getJackson2JsonRedisSerializer() {var jackson2JsonRedisSerializer new GenericJackson2JsonRedisSerializer();jackson2JsonRedisSerializer.configure(objectMapper - {// add java8 time moduleobjectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);objectMapper.activateDefaultTyping(new LaissezFaireSubTypeValidator(),ObjectMapper.DefaultTyping.EVERYTHING);JavaTimeModule javaTimeModule new JavaTimeModule();objectMapper.registerModule(javaTimeModule);});return jackson2JsonRedisSerializer;}问题原因
Cacheable未使用RedisTemplate所以操作无效。他使用的是CacheManager
问题解决
配置CacheManager即可。
我们可以使用 RedisCacheManagerBuilderCustomizer 来自定义CacheManager
public class MyRedisCacheManagerBuilderSerialCustomizer implements RedisCacheManagerBuilderCustomizer {Overridepublic void customize(RedisCacheManager.RedisCacheManagerBuilder builder) {RedisSerializerString stringRedisSerializer new StringRedisSerializer();var jackson2JsonRedisSerializer getJackson2JsonRedisSerializer();var configuration builder.cacheDefaults().serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(stringRedisSerializer)).serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer));builder.cacheDefaults(configuration);var configuredCaches builder.getConfiguredCaches();// 针对有的缓存存在自定义配置的情况读取所有缓存的配置设置序列化方法for (String configuredCache : configuredCaches) {var cacheConfig builder.getCacheConfigurationFor(configuredCache);cacheConfig.ifPresent(config - {var newConfig config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(stringRedisSerializer)).serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer));builder.withCacheConfiguration(configuredCache, newConfig);});}}
}