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