package com.huawei.support.navigation.dao;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import com.huawei.support.cache.ICassCache;
import com.huawei.support.cache.impl.CacheConfigReader;
import com.huawei.support.cache.impl.CassCache;
import com.huawei.support.exception.ApplicationException;
@Service("navigationDaoCache")
public class NavigationDaoCache
{
private static Log sLog = LogFactory.getLog(CassCache.class);
private final static String CACHE_FUNCTION = "support.navigation.navigationdaocache";
private final static String NODE_DOC_LIST = ".node_doc_list";
private final static String NAVIGATOIN_CACHE = "navigationCache";
private boolean IS_USE_CACHE = true;
private final static long CACHE_LIFE_CYCLE = 10 * 60 * 1000;
@Autowired
@Qualifier("navigationDao")
private NavigationDao navigationDao;
@Autowired
@Qualifier("cassCache")
private ICassCache cache;
public NavigationDaoCache() throws ApplicationException
{
// 从配置文件中读取是否使用缓存的配置
IS_USE_CACHE = Boolean.parseBoolean(CacheConfigReader.getInstance()
.getPropertyFromBinding(NAVIGATOIN_CACHE));
}
/**
* 清除缓存对象数据
*/
public void clearCache() throws ApplicationException
{
try
{
Class c = this.getClass();
Method[] methods = c.getMethods();
for (int i = 0; i < methods.length; i++)
{
Method method = methods[i];
String methodStr = methods[i].getName();
if (method.getModifiers() == 1 && methodStr.startsWith("get"))
{
String cacheAreaName = CACHE_FUNCTION + "." + methodStr;
cache.remove(cacheAreaName);
}
}
}
catch (Exception e)
{
e.printStackTrace();
throw new ApplicationException(" clearCache error", e);
}
}
import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import com.huawei.support.cache.ICassCache;
import com.huawei.support.cache.impl.CacheConfigReader;
import com.huawei.support.cache.impl.CassCache;
import com.huawei.support.exception.ApplicationException;
@Service("navigationDaoCache")
public class NavigationDaoCache
{
private static Log sLog = LogFactory.getLog(CassCache.class);
private final static String CACHE_FUNCTION = "support.navigation.navigationdaocache";
private final static String NODE_DOC_LIST = ".node_doc_list";
private final static String NAVIGATOIN_CACHE = "navigationCache";
private boolean IS_USE_CACHE = true;
private final static long CACHE_LIFE_CYCLE = 10 * 60 * 1000;
@Autowired
@Qualifier("navigationDao")
private NavigationDao navigationDao;
@Autowired
@Qualifier("cassCache")
private ICassCache cache;
public NavigationDaoCache() throws ApplicationException
{
// 从配置文件中读取是否使用缓存的配置
IS_USE_CACHE = Boolean.parseBoolean(CacheConfigReader.getInstance()
.getPropertyFromBinding(NAVIGATOIN_CACHE));
}
/**
* 清除缓存对象数据
*/
public void clearCache() throws ApplicationException
{
try
{
Class c = this.getClass();
Method[] methods = c.getMethods();
for (int i = 0; i < methods.length; i++)
{
Method method = methods[i];
String methodStr = methods[i].getName();
if (method.getModifiers() == 1 && methodStr.startsWith("get"))
{
String cacheAreaName = CACHE_FUNCTION + "." + methodStr;
cache.remove(cacheAreaName);
}
}
}
catch (Exception e)
{
e.printStackTrace();
throw new ApplicationException(" clearCache error", e);
}
}
本文介绍了一个基于Spring框架的导航数据访问对象(DAO)缓存实现。该实现利用了Cassandra缓存组件,并提供了缓存配置读取、缓存开关设置等功能。文章详细展示了如何在导航业务场景中使用缓存来提高数据访问效率。

被折叠的 条评论
为什么被折叠?



