type
status
date
slug
summary
tags
category
icon
password
多租户系统用@Cacheable做接口缓存,为了避免缓存数据混乱,需要做缓存数据的租户隔离。
缓存过程源码分析:
- EnableCaching注解 EnableCaching中引入了@Import({CachingConfigurationSelector.class})
- 2.CachingConfigurationSelector
getProxyImports方法中设置了ProxyCachingConfiguration 代理配置类
- CacheInterceptor ProxyCachingConfiguration中配置了缓存拦截器CacheInterceptor类
- 4.CacheAspectSupport 打开CacheInterceptor的父类CacheAspectSupport。 ProxyCachingConfiguration中调用的configure方法设置了缓存处理器 SimpleCacheResolver。
- 5.获取缓存 key getCacheNames方法
修改思路
修改getCacheNames方法,添加租户id作为前缀
现在直接复制源码做了修改,所有要修改的类添加统一前缀
关键地方记录:
后续
改完才发现,直接在RedisCacheConfigutation类中定义一个CacheResolver 的bean应该也是可以的。暂时先不改了。
- 作者:OldCamel
- 链接:https://blog.oldcamel.cc/article/24
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。