com.taotao.cloud.cache.jetcache.enhance.HerodotusCacheManager Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of taotao-cloud-starter-cache-jetcache Show documentation
Show all versions of taotao-cloud-starter-cache-jetcache Show documentation
taotao-cloud-starter-cache-jetcache
The newest version!
/*
* Copyright (c) 2020-2030, Shuigedeng ([email protected] & https://blog.taotaocloud.top/).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.taotao.cloud.cache.jetcache.enhance;
import com.taotao.cloud.cache.jetcache.properties.Expire;
import com.taotao.cloud.cache.jetcache.properties.JetCacheProperties;
import com.taotao.cloud.common.constant.SymbolConstant;
import java.util.Map;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cache.Cache;
/** 自定义 缓存管理器 */
public class HerodotusCacheManager extends JetCacheSpringCacheManager {
private static final Logger log = LoggerFactory.getLogger(HerodotusCacheManager.class);
private final JetCacheProperties cacheProperties;
public HerodotusCacheManager(
JetCacheCreateCacheFactory jetCacheCreateCacheFactory, JetCacheProperties cacheProperties) {
super(jetCacheCreateCacheFactory);
this.cacheProperties = cacheProperties;
this.setAllowNullValues(cacheProperties.getAllowNullValues());
}
public HerodotusCacheManager(
JetCacheCreateCacheFactory jetCacheCreateCacheFactory,
JetCacheProperties cacheProperties,
String... cacheNames) {
super(jetCacheCreateCacheFactory, cacheNames);
this.cacheProperties = cacheProperties;
}
@Override
protected Cache createJetCache(String name) {
Map expires = cacheProperties.getExpires();
if (MapUtils.isNotEmpty(expires)) {
String key = StringUtils.replace(name, SymbolConstant.COLON, cacheProperties.getSeparator());
if (expires.containsKey(key)) {
Expire expire = expires.get(key);
log.debug("[Herodotus] |- CACHE - Cache [{}] is set to use CUSTOM expire.", name);
return super.createJetCache(name, expire.getTtl());
}
}
return super.createJetCache(name);
}
}