package cn.stylefeng.roses.kernel.cache.api.tenant; import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; import java.util.HashMap; import java.util.Map; /** * 租户缓存动态代理 * * @author fengshuonan * @date 2022/11/8 0:45 */ @SuppressWarnings("all") public class TenantCacheProxyFactory { /** * 存放所有代理的缓存 */ private static final Map> proxyCacheMap = new HashMap<>(); /** * 创建带租户控制的缓存代理 * * @author fengshuonan * @date 2022/11/8 1:18 */ public static CacheOperatorApi createTenantCacheProxy(String tenantCode, CacheOperatorApi cacheOperatorApi) { // 计算缓存的key String key = tenantCode + cacheOperatorApi.getCommonKeyPrefix(); // 直接获取缓存中的代理 if (proxyCacheMap.containsKey(key)) { return (CacheOperatorApi) proxyCacheMap.get(key); } TenantCacheProxy tenantCacheProxy = new TenantCacheProxy(); CacheOperatorApi resultCacheOperator = tenantCacheProxy.bindCacheObject(tenantCode, cacheOperatorApi); proxyCacheMap.put(key, resultCacheOperator); return (CacheOperatorApi) resultCacheOperator; } }