方式一:在spring-servlet.xml中配置任务约束,并开启任务
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd "
<task:annotation-driven/>
|

配置好之后,定义任务类:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class CzTongjiTask {
@Scheduled(cron = "0/5 * * * * ? ")
public void tongjiTask() {
System.out.println("-----------");
}
}
|
到此,第一种配置定时任务结束。
方式二:创建实现Job接口的实现类
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import mapper.CommonMapper;
public class TongjiTaskJob implements Job {
@Autowired
private CommonMapper commonMapper;
public TongjiTaskJob() {
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
}
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
try {
System.out.println(calendar.getTime());
} catch (Exception e) {
e.printStackTrace();
}
}
}
|
创建任务管理类,并在该类中执行指定的定时任务
import org.apache.log4j.Logger;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.stereotype.Component;
@Component
public class TimerTaskScheduleManage {
private final Logger logger = Logger.getLogger(this.getClass());
private void AddTongjiTask() {
String taskId = "TongjiTaskJob";
String groupName = taskId + "Group";
try {
Scheduler scheduler = factory.getScheduler();
TriggerKey triggerKey = new TriggerKey(taskId, groupName);
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
if (trigger == null) {
// 创建工作内容
JobDetail jobDetail = JobBuilder.newJob(TongjiTaskJob.class).withIdentity(taskId, groupName).build();
// 创建触发器
trigger = TriggerBuilder.newTrigger().withIdentity(taskId, groupName)
.withSchedule(CronScheduleBuilder.cronSchedule("0 0 2 1/1 * ? ")).build();
// 粘合工作和触发器
scheduler.scheduleJob(jobDetail, trigger);
// 启动调度器
scheduler.start();
}
} catch (Exception e) {
logger.error("添加TongjiTask定时任务异常!" + e.getMessage());
}
}
// 定时执行的方法
public void execute() {
this.AddTongjiTask();
}
}
|
到此第二种定时任务配置结束,启动项目即可执行定时任务。
注意:如果不想在第一种方式中执行定时任务:就把@Scheduled注解注释掉,在第二种方式中不想指定定时任务,就把红色字体的代码注释掉即可