使用监听器调用上下文监听器从数据库取常量

来源:互联网 发布:哪里多淘宝模板下载 编辑:程序博客网 时间:2024/06/15 17:51
web.xml片段
    <listener>        <description>spring监听器</description>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener>    <listener>        <listener-class>com.bigdatass.financial.listener.InitServlet</listener-class>    </listener>
调用监听类代码
import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;/** * 实现servlet上下文监听器 * @author dxh * */public class InitServlet implements ServletContextListener {    @Override    public void contextInitialized(ServletContextEvent sce) {        Object path = sce.getSource();//获取来源        System.out.println(path + "startListener================");        InitData.getInstance();//调用单利    }    @Override    public void contextDestroyed(ServletContextEvent sce) {        System.out.println("endListener================");    }}
单利实现接口取值
import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import com.bigdata.financial.investment.culture.model.WhNavigationDict;import com.bigdata.financial.investment.culture.service.NavigationDictService;import com.bigdata.financial.investment.culture.service.impl.NavigationDictServiceImpl;import com.bigdata.financial.investment.culture.util.ApplicationContextUtil;/** * 单利模式下实现对接口的查询和调用, * 初始化加入内存中方便调用 * @author dxh * */public class InitData {    private static final Log log = LogFactory.getLog(InitData.class);    private static Map<String,String> PROJECTTYPE =null;    private InitData(){        init();    }    private static class SingletonHolder{        private static InitData instance = new InitData();    }    public static InitData getInstance(){        return SingletonHolder.instance;    }    private static void init(){        PROJECTTYPE = new LinkedHashMap<String, String>();        try{            NavigationDictService navigationdictService = ApplicationContextUtil.getApplicationContext().getBean(NavigationDictServiceImpl.class);            List<WhNavigationDict> dataList = navigationdictService.getParent();            for(WhNavigationDict bean : dataList){                PROJECTTYPE.put(bean.getId()+"", bean.getDndName());            }            System.out.println("加载完毕projectMap");        } catch (Exception e) {            log.error("",e);        }    }    public static Map<String, String> getPROJECTTYPE() {        return PROJECTTYPE;    }    public static void setPROJECTTYPE(Map<String, String> pROJECTTYPE) {        PROJECTTYPE = pROJECTTYPE;    }}

其他地方常量的调用方法

InitData.getPROJECTTYPE;获取了map;当然本项目是之前已经调用的是map,所以为了不动前面页面,若前面调用的是list,则可以返回list
原创粉丝点击