TimerTask实现定期检查数据库操作
最近在做一个P2P 的众筹网站,其他的内容还都可以,只是定期检查数库里面的项目是不是到期了,让我费了一些时间,现在写好了,我把它总结下来,以便以后使用。顺便和大家分享一下。
Timer可以看成一个定时器,安排以后可以在后台线程中执行任务,可以设置任务执行的周期,每隔一段时间执行一次。
我的这个项目使用的是Spring+SpringMVC+MyBatis框架,采用注解的方式管理Bean,运行环境是MyEclipse8.6,Orcal数据库
第一步:首先需要修改Spring的Web.xml文件中的Listener配置
<!-- spring配置 -->
<!--
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
-->
<!-- spring配置(修改后) --> <listener>
<listener-class>com.aaa.listener.ProjectListener</listener-class>
</listener>
第二步:定义一个任务类并继承DataTask (import java.util.TimerTask;)重写Run方法。run方法里面调用的是注入的实现类的方法,这个实现类和平时写的一样,在这里我就不多说了
package com.zzzy.qingju.interceptor; import java.util.TimerTask; import javax.annotation.Resource; import org.springframework.stereotype.Repository; import com.zzzy.qingju.dao.XiangMuDao; @Repository
public class DataTask extends TimerTask { //注入项目Dao的实现类
private XiangMuDao xmdaoimp;
@Resource(name = "xiangMuDao")
public void setXmdaoimp(XiangMuDao xmdaoimp) {
this.xmdaoimp = xmdaoimp;
} @Override //重写run方法
public void run() {
// TODO Auto-generated method stub
try {
xmdaoimp.updateZt_task();//调用方法
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
第三步:定义一个DataListener类继承ContextLoaderListener(必须要继承的)再实现一个ServletContextListener(也是必须的)
package com.zzzy.qingju.interceptor; import java.util.Timer; import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils; public class DataListener extends ContextLoaderListener implements
ServletContextListener { public void contextDestroyed(ServletContextEvent event) {
// TODO Auto-generated method stub
super.contextDestroyed(event);
} public void contextInitialized(ServletContextEvent event) {
// TODO Auto-generated method stub
super.contextInitialized(event);
ServletContext servletContext = event.getServletContext();
WebApplicationContext wp = WebApplicationContextUtils
.getRequiredWebApplicationContext(servletContext);
//获取上面定义的dataTask的bean
DataTask dataTask = (DataTask) wp.getBean("dataTask");
Timer timer = new Timer();//新建一个Timer
// Tomcat服务器启动一分钟后启动Timer,每次间隔一小时再启动一次
timer.schedule(dataTask, 1000 * 60, 60*60 * 1000);
//调用Timer的schedule的方法执行操作,以后每小时执行一次 } }
以上就完成了一个Timer可以在后台定期执行一个方法。这些是查找资料做出来的,以后还要好好的深入研究一下。
TimerTask实现定期检查数据库操作的更多相关文章
- 如何在高并发环境下设计出无锁的数据库操作(Java版本)
一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...
- 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~
最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...
- MySQL 系列(二) 你不知道的数据库操作
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网 ...
- ABP创建数据库操作步骤
1 ABP创建数据库操作步骤 1.1 SimpleTaskSystem.Web项目中的Web.config文件修改数据库配置. <add name="Default" pro ...
- 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- django数据库操作和中间件
数据库配置 django的数据库相关表配置在models.py文件中,数据库的连接相关信息配置在settings.py中 models.py相关相关参数配置 from django.db import ...
- [Android Pro] 完美Android Cursor使用例子(Android数据库操作)
reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...
- phpcms v9 中的数据库操作函数
1.查询 $this->select($where = '', $data = '*', $limit = '', $order = '', $group = '', $key='') 返回 ...
- Android打造属于自己的数据库操作类。
1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...
随机推荐
- 添加Pods依赖
1. 添加所需文件 1.1. 添加 .podspec 文件 1.1.1. 创建 必须文件 使用命令 pod spec create name.podspec 或者直接拷贝一份 1.1.2. 添加内 ...
- [c#]解决方案:需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。
问题详情 如下图所示(部分): 出现该错误,是因为应用程序中需要使用到jquery(现在的web应用程序哪个能离开jquery呢),而目前程序目录中并没有jquery文件,或者有jquery文件但是程 ...
- PHP实现验证码图片
<?php header("Content-type: image/png"); session_start(); $authnum = ''; $str = 'abcdef ...
- 【BZOJ1552】[Cerc2007]robotic sort Splay
[BZOJ1552][Cerc2007]robotic sort Description Input 输入共两行,第一行为一个整数N,N表示物品的个数,1<=N<=100000.第二行为N ...
- DNS没有生效的几个原因
1.记录没有正确添加 请确认你的域名记录是否完全正确的添加.线路类型正确,记录类型正确 2.域名还没有生效 这个情况还会有另外一个现象,就是域名有时候可以ping,有时候不能ping. 这是因为你当地 ...
- Flex移动皮肤开发(二)
范例文件 mobile-skinning-part2.zip 在这个讨论创建 Flex 移动 skin 的系列的 第 1 部分 中,我讨论了 Flex 团队在 Mobile 主题中所做的性能优化的原理 ...
- Spring内部bean无法通过id获取
内部Bean注入正常,但是直接在context中getBean是得不到的: <?xml version="1.0" encoding="UTF-8"?&g ...
- SSM整合XML版(Maven Project)
一.使用IntelliJ IDEA 创建Maven管理的JAVA Web项目 ①新建项目,选择Maven Module 在本地磁盘用户的..m2目录下生成settings文件: Maven工程搭建完毕 ...
- 手机APP测试思路及测试要点
一 手机APP测试基本思路: 测试计划--测试方案--测试用例--执行: 很多小公司都没有具体的需求,项目时间也比较紧,而且流程也不是很严谨,在这样的情况之下,作为测试的我们,该怎样去对项目进行用例 ...
- android.os.NetworkOnMainThreadException 异常
记下来以后备用 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectD ...