基于hibernate继承servletContext实现定时查询数据库保存到map,实现缓存防止频繁的交互数据库

本文介绍了一个使用Java实现的定时任务,该任务每5分钟查询数据库并将数据保存到map缓存中,以提高系统性能。通过创建自定义的SysConfigThread类并继承HttpServlet及实现Runnable接口,利用ConcurrentHashMap进行线程安全的数据存储,同时展示了如何在web.xml中配置监听器以启动定时任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一:
定时每5分钟查询数据库保存到map缓存
public class SysConfigThread extends HttpServlet implements Runnable{
private Logger logger = LoggerFactory.getLogger(SysConfigThread.class);
public static Date lastTime = null;
private SysConfigManager sysConfigManager;

public SysConfigThread(SysConfigManager sysConfigManager) {
	this.sysConfigManager = sysConfigManager;
	
}


public void run() {
	System.out.println("--------------ddshopRunServices SysConfig 启动-------------");
	ConcurrentHashMap< String ,String> acountMap = new ConcurrentHashMap<String, String>();
	String keys="ceshiKey";
	int count=1;
	while (true) {
		try {
			if(count ==1){
				count = 2;
			}else{
				Thread.sleep(300*1000);
			}
			//获取当前时间
			Date date = new Date();
			//获取到sys-config表的所有key值
				SysConfig syscon=sysConfigManager.getSysConfigByKey2(keys);
			if(syscon.getValue()!=null){				
				String s2 = syscon.getValue().substring(1);
				String s3=s2.substring(0,s2.length() - 1);
				String[] str=s3.split(",");
				for(int i=0;i<str.length;i++){
					//获取到了sys-Config表的(2,6)
					if (Constants.warnAccountMap == null
							|| Constants.warnAccountMap.size() <= 0) {
						acountMap.put(str[i],str[i]);
						Constants.warnAccountMap = acountMap;
					} else {
						acountMap = Constants.warnAccountMap;
						if (acountMap.get(str[i]) == null) {
							acountMap.put(str[i],str[i]);
							
							Constants.warnAccountMap = acountMap;
						}
					}
				}
				//	System.out.println("accountMap"+acountMap);
					//acountMap存着我在sys-Config表里取出的(4.6)办事处测试的key			
		}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

}
第二:定时任务启动类:实现ServletContextListener
public class ManagerListener implements ServletContextListener {

public void contextDestroyed(ServletContextEvent arg0) {
}

SysConfigManager sysConfigManager = (SysConfigManager) ctx.getBean(“sysConfigManager”);
SysConfigThread syncThread = new SysConfigThread(sysConfigManager);// 需要执行的线程
Thread thread = new Thread(syncThread);// 开启一个线程
thread.start();// 线程执行
/System.out.println(“监听器服务器起来”);/
}
}
第三:web.xml一定要配置监听器

contextConfigLocation

classpath:applicationContext.xml,classpath:applicationContext-wjt.xml



org.springframework.web.context.ContextLoaderListener


com.tdyhWap.listener.ManagerListener

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值