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可以在后台定期执行一个方法。这些是查找资料做出来的,以后还要好好的深入研究一下。

时间: 2024-10-12 11:56:29

TimerTask实现定期检查数据库操作的相关文章

C# .NET更智能的数据库操作的封装

前述: 对数据库操作的封装,相信网络上已经有一大堆,ORM框架,或者是.NET本身的EF,都很好的支持数据库操作.这篇文章是分享自己所思考的,对数据库操作的简单封装.我对于这篇文章,认为被浏览者所关注重点的是怎么分析设计数据库操作封装,代码是其次.而且,这是我第一篇文章,为了想好怎么实现花了些天,代码是博客发表时现写的.所以我想,使用可能还有bug,而且没有try catch异常的设计. 这个框架我理应做到对数据库无关,无论是哪个数据库都能够使用.不过,重点在于分析,而不是代码.所以,为了更好的

python--第十一天总结(paramiko 及数据库操作)

数据库操作 Python 操作 Mysql 模块的安装 linux:     yum install MySQL-python window:     http://files.cnblogs.com/files/wupeiqi/py-mysql-win.zip

数据库——基础(数据库操作,表格操作)——增加高级查询

笔记 LAMP:Linx(操作系统) A(阿帕奇)——网页的应用程序 M(Mysql):体积小,应用简单 P(PHP) 第一步:搭建网页环境——A\M\P WAMP:用WAMP搭建环境 DW:更好的显示 数据库的基本操作: 数据库——表结构——字段(列) 每一行数据成为一条数据(记录) 特点:关系型数据库,有严格的规范 1.必须有主键:能够唯一标识一条数据的字段 2 T-SQL:通用的数据库操作语句 自增长列code(主键列) ;连接键表 最后一个字段不加 ,#注释 创建表:create tab

SQLiteDatabase数据库操作详解

今天花了点时间总结了一下数据的相关知识android中系统自带的数据库SQLiteDatabase数据库,这种数据库操作起来比ormLite数据库(第三方的)麻烦点,但是我对这种数据库操作比较熟悉所以我就采用了这种数据库,如有错误欢迎大家批评指正,谢谢 1.SQLiteDatabase SQLiteDatabase本身是一个数据库的操作类,但是如果想进行数据库的操作,还需要android.database.sqlite.SQLiteOpenHelper类的帮助,在执行SQL语句时execSQL(

Android打造属于自己的数据库操作类。

1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要去做增删改查的操作的时候,就得通过getWritableDatabase获取一个SQLiteDataBase然后老老实实去写操作值的put以及查询返回的Cursor处理,其实我们可以搞一个对象来帮我们干这些事情,打造属于你自己的数据库操作类. 2.操作类的初显形 假设现在我们什么都没有,我们要去搞一

laravel 数据库操作小例子

public function demo() { $res = null; //insert数据插入 //$user=array('username'=>'joy','password'=>'123456','age'=>23); //$res = DB::table('users')->insert($user); /* 数据查询 $res = DB::table('users')->where('username','joy')->get(); $res = DB:

常用的Mysql数据库操作语句大全

零.用户管理: 1.新建用户: >CREATE USER name IDENTIFIED BY 'ssapdrow'; 2.更改密码: >SET PASSWORD FOR name=PASSWORD('fdddfd'); 3.权限管理 >SHOW GRANTS FOR name;    //查看name用户权限 >GRANT SELECT ON db_name.* TO name; //给name用户db_name数据库的所有权限 >REVOKE SELECT ON db_n

人事管理系统——数据库操作类

连接数据库类主要代码: 1 package PersonSystem; 2 3 import java.sql.*; 4 /** 5 * 6 * 连接数据库的类 7 * 8 */ 9 public class Database 10 { 11 private Statement stmt = null; 12 ResultSet rs = null; 13 private Connection conn = null; 14 String sql; 15 String strurl = "jdb

SQL数据库操作整理

1.规范 ①关键字与函数名称全部大写: ②数据库名称.表名称.字段名称全部小写: ③SQL语句必须以分号结尾. 2.数据库操作 // 1. 创建数据库,其中[]表示可以省略 CREATE { DATABASE | SCHEMA } [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name; // 2. 显示当前服务器下的数据库列表 SHOW { DATABASES | SCHEMAS } [LIKE 'pattern' |