自定义缓存注解
㈠ 自定义rediscachemanager
在项目的Redis配置类RedisConfig中,自定义名为cacheManager的Bean组件,用于Redis缓存管理。
java
@Bean
public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
创建String和JSON格式序列化对象,分别用于缓存数据key和value的转换。
RedisSerializer strSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);
解决查询缓存转换异常问题,使用ObjectMapper进行序列化。
ObjectMapper om = new ObjectMapper();
设置ObjectMapper的可见性和非最终类型,以适应序列化。
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
定制序列化方式,使用序列化对象对key和value进行序列化。
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofDays(1))
.serializeKeysWith(RedisSerializationContext.SerializationPair
.fromSerializer(strSerializer))
.serializeValuesWith(RedisSerializationContext.SerializationPair
.fromSerializer(jacksonSeial))
.disableCachingNullValues();
构建缓存管理器,设置缓存默认配置。
RedisCacheManager cacheManager = RedisCacheManager
.builder(redisConnectionFactory).cacheDefaults(config).build();
返回自定义的缓存管理器。
}
自定义的RedisCacheManager中,通过`@Bean`注解实现,包含对缓存数据key和value的序列化方式定制。使用`StringRedisSerializer`和`Jackson2JsonRedisSerializer`分别进行字符串和JSON格式的序列化,同时设定缓存有效期为1天。
完成自定义后,可进行测试以验证效果。使用自定义序列化机制的RedisCacheManager时,实体类无需实现序列化接口。
学习上述内容,可参考拉勾教育的《Java工程师高薪训练营》课程,该课程提供全面的知识体系和内推大厂服务。建议感兴趣的朋友也查看。