优点: 可以减少使用表 提高性能
不多说上代码
web.xml配置
<listener>
<description>初始化缓存</description>
<listener-class>com.mvc.controller.DictionaryCacheListener</listener-class>
</listener>
获取字典数据
@Service("dictionaryService")
public class CacheDict {
@Autowired
private CacheDao cacheDao;
/**
* 类型与字典值
*/
public static Map<String,Map<String,String>> dictMap = new HashMap<String, Map<String,String>>();
//public static List<String> codetypeList = new ArrayList<String>();
public void getCacheDict(){
List<Map<String,String>> dictList = cacheDao.getDict();
//清空缓存数据
CacheDict.dictMap.clear();
Set<String> codetypeSet = new TreeSet<String>();
for (Map<String, String> map : dictList) {
codetypeSet.add(map.get("codetype"));
}
for (String codetype : codetypeSet) {
Map<String,String> codeValMap = new HashMap<String,String>();
for (Map<String, String> map : dictList) {
if(codetype.equals(map.get("codetype"))){
codeValMap.put(map.get("idcode"), map.get("idname"));
}
}
dictMap.put(codetype, codeValMap);
}
System.out.println("字典数据大小: "+dictMap.size());
}
}
加载缓存
public class DictionaryCacheListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("++++++++++++++++++ 数据字典已缓存 +++++++++++++++++++++");
WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(arg0.getServletContext());
CacheDict dc = (CacheDict) webApplicationContext.getBean("dictionaryService");
dc.getCacheDict(); // 调用数据字典Manager的一个方法来缓存
}
}