java

位置:IT落伍者 >> java >> 浏览文章

Java调度任务和Spring Quartz


发布日期:2018年01月04日
 
Java调度任务和Spring Quartz

并非所有的系统中发生的事情都是由用户主动引发的系统有时候需要根据一定的规则触发相应的时间其实在jdkjava sdk就通过javautilTimer提供相应的功能一个简单的例子说明如何使用很简单

第一步我们需要建立一项任务我们的任务需要继承javautilTimerTask

package comdanan;

import javatextSimpleDateFormat;

import javautilDate;

import javautilTimerTask;

public class TimeTask extends TimerTask {

@Override

public void run() {

//没有秒钟报告现在的时刻任务

SimpleDateFormat sdf=new SimpleDateFormat(yyyy年MM月 HH:mm:ss);

Systemoutprintln(sdfformat(new Date()));

}

}

我们需要启动我们的任

package comdanan;

import javautilTimer;

/**

* @author Administrator

*

*/

public class Hello {

public static void main(String[] args) throws Exception {

Timer timer=new Timer();

timerschedule(new TimeTask() );//注册此任务在第一次运行后的秒钟时间执行以后每隔秒钟时间执行一次

}

}

schedule(TimerTask task long delay long period)中task指定了需要执行的任务delay指定在第一次运行任务后的多少毫秒执行此任务period参数指定在以后的多少毫秒执行一次任务

我们可以看到很遗憾的是Timer只可以指定多久执行一次并不能指定在具体那个时间点执行这项任务比如说我们需要每天午夜执行某一任务而正是QuartZ调度器起作用的时候了关于QuartZ的更多信息可以访问下面让我们来看QuartZ是怎么工作的吧!

创建一项任务

public class Shedule {

//this class do daily task for message awoke and cycle task

public Shedule() {

}

public void say(){

//cycleTask();

messageAwoke();

}

}

package comdananaction;

import orgquartzJobExecutionContext;

import orgquartzJobExecutionException;

import orgspringframeworkschedulingquartzQuartzJobBean;

public class DailySay extends QuartzJobBean {

private Shedule sh ;

@Override

protected void executeInternal(JobExecutionContext arg)

throws JobExecutionException {

shsay();

}

public Shedule getSh() {

return sh;

}

public void setSh(Shedule sh) {

thissh = sh;

}

}

我们使用Spring的注入容器注入Shedule

调度cron任务

在Spring配置文件中

<bean id=task class=comdananactionShedule>

<property name=hibernateSession ref=hibernateSession></property>

</bean>

<bean id=job class=orgspringframeworkschedulingquartzJobDetailBean>

<property name=jobClass value=comdananactionDailySay></property>

<property name=jobDataAsMap>

<map>

<entry key=sh valueref=task></entry>

</map>

</property>

</bean>

<bean id=report class=orgspringframeworkschedulingquartzCronTriggerBean>

<property name=jobDetail ref=job></property>

<property name=cronExpression value= * * ?></property>

</bean>

启动任务

<bean id=schedulerFactoryBean class=orgspringframeworkschedulingquartzSchedulerFactoryBean>

<property name=triggers>

<list>

<ref bean=report/>

</list>

</property>

</bean>

这样你将会完成每天凌晨钟启动Shedule 任务的功能

               

上一篇:用 Eclipse 插件提高代码质量

下一篇:Struts s Tiles 使用入门完全攻略