SpringMvc 系统启动时加载数据到内存中

来源:互联网 发布:xampp php 5.5 编辑:程序博客网 时间:2024/05/18 22:47

转:http://blog.csdn.net/newstruts/article/details/18668269

 在项目启动时加载数据到内存中(我这里是数据字典),以后再代码中就不用每次从数据库去查询了

  Dictionary 数据字典实体


SysInitBean  要初始化的Bean,要实现  ServletContextAware 接口

package com.wonders.framework.base;import java.util.Properties;import javax.servlet.ServletContext;import net.sf.json.JSONObject;import org.springframework.beans.factory.InitializingBean;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import org.springframework.web.context.ServletContextAware;import com.wonders.framework.dictionary.service.DictionaryService;import com.wonders.framework.util.FileUtil;//实现ServletContextAware,可以获得servletcontext//@Component注解了,直接在xml里配置这个bean就行了,系统自动调用@Componentpublic class SysInitBean implements  ServletContextAware {@Autowiredprivate DictionaryService dictionaryService;@Overridepublic void setServletContext(ServletContext sc) {// 把项目名称放到application中String ctxPath=sc.getContextPath();sc.setAttribute("ctxPath",ctxPath);//初始化数据字典到application中dictionaryService.init(sc);}}

DictionaryServiceImpl 

     用来查询数据字典

package com.wonders.framework.dictionary.service.impl;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Properties;import javax.servlet.ServletContext;import net.sf.json.JSONObject;import org.apache.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import com.wonders.framework.dictionary.dao.DictionaryDao;import com.wonders.framework.dictionary.entity.po.Dictionary;import com.wonders.framework.dictionary.service.DictionaryService;import com.wonders.framework.util.FileUtil;@Component("dictionaryServiceImpl")public class DictionaryServiceImpl implements DictionaryService {private static Logger logger = Logger.getLogger(DictionaryServiceImpl.class.getName());// private static Map<String, Map<String, String>> localDics = new// HashMap<String, Map<String, String>>();@Autowiredprivate DictionaryDao dictionaryDao;private ServletContext sc;// @PostConstructpublic void init(ServletContext sc) {this.sc = sc;List<Dictionary> list = null;try {list = dictionaryDao.findAll();} catch (Exception e) {logger.error("数据字典数据查找失败!");}if (null == list) {return;}Map<String, Map<String, String>> localDics = new HashMap<String, Map<String, String>>();Map<String, String> map = null;for (Dictionary dic : list) {String type = dic.getType();if (localDics.containsKey(type)) {map = localDics.get(type);map.put(dic.getKey(), dic.getValue());} else {map = new HashMap<String, String>();map.put(dic.getKey(), dic.getValue());localDics.put(type, map);}}Properties prop = FileUtil.getProperties("/config/dictionary.properties");for (Object key : prop.keySet()) {Object value = prop.get(key);sc.setAttribute((String) key,JSONObject.fromObject(localDics.get(value)));}}public String getValue(String type, String key) {JSONObject jsonObject = (JSONObject) sc.getAttribute(type);return (String) jsonObject.get(key);}public boolean isDic(String type) {JSONObject jsonObject = (JSONObject) sc.getAttribute(type);return jsonObject == null ? false : true;}public String getKey(String type, String value) {JSONObject jsonObject = (JSONObject) sc.getAttribute(type);for (Object key : jsonObject.keySet()) {String sValue = (String) jsonObject.get(key);if (sValue.equals(value)) {return (String) key;}}return null;}// @PreDestroy// public void destroy() {// localDics = null;// }@SuppressWarnings("unchecked")public Map<String, String> findDictionary(String type) {JSONObject jsonObject = (JSONObject) sc.getAttribute(type);return jsonObject;}}



阅读全文
0 0