bugfix:Spring Cache 自定义过期时间,在多租户场景下,会额外拼接 # 的问题

This commit is contained in:
YunaiV 2024-04-06 11:27:00 +08:00
parent 05af77b786
commit d5d5c3cbeb

View File

@ -40,12 +40,15 @@ public class TimeoutRedisCacheManager extends RedisCacheManager {
// 核心通过修改 cacheConfig 的过期时间实现自定义过期时间
if (cacheConfig != null) {
// 移除 # 后面的 : 以及后面的内容避免影响解析
names[1] = StrUtil.subBefore(names[1], StrUtil.COLON, false);
String ttlStr = StrUtil.subBefore(names[1], StrUtil.COLON, false); // 获得 ttlStr 时间部分
names[1] = StrUtil.subAfter(names[1], ttlStr, false); // 移除掉 ttlStr 时间部分
// 解析时间
Duration duration = parseDuration(names[1]);
Duration duration = parseDuration(ttlStr);
cacheConfig = cacheConfig.entryTtl(duration);
}
return super.createRedisCache(name, cacheConfig);
// 创建 RedisCache 对象需要忽略掉 ttlStr
return super.createRedisCache(names[0] + names[1], cacheConfig);
}
/**