SpringMvc 系统启动时加载数据到内存中
2017-05-27 09:56
1171 查看
转: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就行了,系统自动调用
@Component
public class SysInitBean implements ServletContextAware {
@Autowired
private DictionaryService dictionaryService;
@Override
public void setServletContext(ServletContext sc) {
// 把项目名称放到application中
String ctxPath=sc.getContextPath();
sc.setAttribute("ctxPath",ctxPath);
//初始化数据字典到application中
dictionaryService.init(sc);
}
}
DictionaryServiceImpl
用来查询数据字典
在项目启动时加载数据到内存中(我这里是数据字典),以后再代码中就不用每次从数据库去查询了
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就行了,系统自动调用
@Component
public class SysInitBean implements ServletContextAware {
@Autowired
private DictionaryService dictionaryService;
@Override
public 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>>(); @Autowired private DictionaryDao dictionaryDao; private ServletContext sc; // @PostConstruct public 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; } }
相关文章推荐
- SpringMvc 系统启动时加载数据到内存中
- SpringMvc 系统启动时加载数据到内存中
- springMVC启动时,加载数据至内存中配置详解;
- web服务刚启动时SpringMVC注解就加载一定的数据库数据进入内存中
- SSH开发框架中,实现系统启动加载类,读取数据库常用数据进入内存,利用Spring托管,并完成reload功能
- springmvc在启动工程的时候就访问数据库,加载一些共同的数据
- Java+SpringMVC中自实现定时加载更新数据库数据到内存的方法
- TFS文件系统数据服务器启动加载分析
- SSH开发框架中,实现系统启动加载类,读取数据库常用数据进入内存以及将数据放在application
- 简单的Servlet,tomcat启动将数据加载到内存中去
- 14web启动将数据加载到内存中
- 如何设计Servlet容器启动时加载多个数据到内存
- SSH框架---实现系统启动加载类,读取数据库常用数据进入内存以及将数据放在application
- springMVC 启动时 加载数据
- 【原创】SSH开发框架中,实现系统启动加载类,读取数据库常用数据进入内存,利用Spring托管,并完成reload功能
- SSH开发框架中,实现系统启动加载类,读取数据库常用数据进入内存,利用Spring托管,并完成reload功能
- 系统启动时,数据动态加载业务若干思考
- 开源OA系统启动:基础数据,工作流设计。[注:已关闭,勿关注,表歉意]
- 业务 加载DB数据到内存的 一些基本原则
- Linux如何在系统启动时自动加载模块