Redis注解默认序列化机制

Redis注解默认序列化机制

打开Spring Boot整合Redis组件提供的缓存自动配置类RedisCacheConfiguration(org.springframework.boot.autoconfigure.cache包下的),查看该类的源码信息,其核心代码如下

java

@Configuration

class RedisCacheConfiguration {

@Bean

public RedisCacheManager cacheManager(RedisConnectionFactory

redisConnectionFactory,ResourceLoader resourceLoader) {

RedisCacheManagerBuilder builder =

RedisCacheManager.builder(redisConnectionFactory)

.cacheDefaults(this.determineConfiguration(resourceLoader.getClassLoader()));

List cacheNames = this.cacheProperties.getCacheNames();

if(!cacheNames.isEmpty()) {

builder.initialCacheNames(new LinkedHashSet(cacheNames));

}

return (RedisCacheManager)this.customizerInvoker.customize(builder.build());

}

private org.springframework.data.redis.cache.RedisCacheConfiguration

determineConfiguration(ClassLoader classLoader){

if(this.redisCacheConfiguration != null) {

return this.redisCacheConfiguration;

} else {

Redis redisProperties = this.cacheProperties.getRedis();

org.springframework.data.redis.cache.RedisCacheConfiguration config =

org.springframework.data.redis.cache.RedisCacheConfiguration.defaultCacheConfig();

config = config.serializeValuesWith(SerializationPair.fromSerializer(

new JdkSerializationRedisSerializer(classLoader)));

return config;

}

}

}

从上述核心源码中可以看出,同RedisTemplate核心源码类似,RedisCacheConfiguration内部同样通过Redis连接工厂RedisConnectionFactory定义了一个缓存管理器RedisCacheManager;同时定制RedisCacheManager时,也默认使用了JdkSerializationRedisSerializer序列化方式。

​ 如果想要使用自定义序列化方式的RedisCacheManager进行数据缓存操作,可以参考上述核心代码创建一个名为cacheManager的Bean组件,并在该组件中设置对应的序列化方式即可

* 注意,在Spring Boot 2.X版本中,RedisCacheManager是单独进行构建的。因此,在Spring Boot 2.X版本中,对RedisTemplate进行自定义序列化机制构建后,仍然无法对RedisCacheManager内部默认序列化机制进行覆盖(这也就解释了基 于注解的Redis缓存实现仍然会使用JDK默认序列化机制的原因),想要基于注解的Redis缓存实现也使用自定义序列化机制,需要自定义RedisCacheManager.

学习让人快乐,学习更让人觉得无知!学了1个多月的《Java工程师高薪训练营》,才发现自己对每个技术点的认知都很肤浅,根本深不下去,立个Flag:每天坚持学习一小时,一周回答网上3个技术问题,把自己知道都分享出来。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容