数据字典设计实现缓存

来源:互联网 发布:穿越火线fps优化器 编辑:程序博客网 时间:2024/06/08 16:55

优点: 可以减少使用表 提高性能

不多说上代码
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的一个方法来缓存    }}
原创粉丝点击