验证中...
Languages: Java
Categories: 编程语言基础
Latest update 2019-11-08 21:54
gugva抽象类
Raw Copy
package com.sibu.mall.returns.common.cash;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import java.util.concurrent.TimeUnit;
public abstract class GuavaCashBase<K,V> {
private LoadingCache<K,V> cache;
/**
*
* 功能描述:超时缓存:数据写入缓存超过一定时间自动刷新
*
* @param duration:过期时间
* @param timeUtil:时间单位
* @return:
* @auther: lw
* @date: 2019/10/22 11:24
*/
public GuavaCashBase(long duration, TimeUnit timeUtil)
{
cache = CacheBuilder.newBuilder()
.expireAfterWrite(duration, timeUtil)
.build(new CacheLoader<K, V>() {
@Override
public V load(K k) throws Exception
{
return loadData(k);
}
});
}
/**
*
* 功能描述:从缓存获取数据
*
* @param param
* @return: V
* @auther: lw
* @date: 2019/10/22 11:25
*/
public V getCache(K param)
{
V v = null;
try {
v = cache.getUnchecked(param);
} catch (Exception e) {
}
return v;
}
/**
*
* 功能描述:清除缓存数据,缓存清除后,数据会重新调用load方法获取
*
* @param k
* @return: void
* @auther: lw
* @date: 2019/10/22 11:25
*/
public void refresh(K k)
{
cache.refresh(k);
}
/**
*
* 功能描述:主动设置缓存数据
*
* @param k
* @param v
* @return: void
* @auther: lw
* @date: 2019/10/22 11:25
*/
public void put(K k, V v)
{
cache.put(k, v);
}
/**
*
* 功能描述:缓存数据加载方法
*
* @param k
* @return: V
* @auther: lw
* @date: 2019/10/22 11:25
*/
protected abstract V loadData(K k);
}
使用
Raw Copy
// 内部私有方法
private GuavaCashBase memberBindGroupCash = new GuavaCashBase<Integer,MemberBindGroup>(30, TimeUnit.SECONDS){
@Override
protected MemberBindGroup loadData(Integer memberId) {
return memberBindGroupBiz.selectGroupByMemberId(memberId);
}
};
MemberBindGroup memberBindGroup = (MemberBindGroup) memberBindGroupCash.getCache(request.getMemberId());
1573221230(1).jpg

Comment list( 0 )

Sign in for post a comment

Help Search