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

41 篇文章 0 订阅
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值