SSM使用quartz设置定时任务

在ssm框架中,利用quartz设置定时任务。

1- maven管理项目导入quartz依赖。

<dependency>
	<groupId>org.quartz-scheduler</groupId>
	<artifactId>quartz</artifactId>
	<version>2.3.0</version>
</dependency>
2- 定义job执行类,继承Job

import java.text.SimpleDateFormat;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class FirstJob implements Job{

	public void execute(JobExecutionContext context) throws JobExecutionException {
		System.out.println("job-->"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(System.currentTimeMillis()));
	}
	
}
3- 写一个管理类,用来管理启动定时任务

import java.util.List;

import org.apache.log4j.Logger;
import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.beans.factory.annotation.Autowired;

import com.lj.vjg.model.Job;
import com.lj.vjg.service.JobService;

public class JobManager {
	
	private Logger log = Logger.getLogger(JobManager.class);

	/**
	 * SchedulerFactory使用获取Scheduler
	 *
	 * @return
	 * @throws Exception
	 */
	private static Scheduler getScheduler() throws Exception {
		SchedulerFactory scheduler = new StdSchedulerFactory();
		return scheduler.getScheduler();
	}

	@Autowired
	private JobService jobService;

	public void addJob() throws Exception {
		// 1- 根据条件从数据库获取定时任务详情
		Job job = new Job();
		job.setStatus(0);
		List<Job> jobList = jobService.selectJob(job);
		if (jobList == null || jobList.isEmpty()) {
			return;
		}
		// 2- 获取Scheduler
		Scheduler scheduler = getScheduler();

		// 3- 循环添加数据库中的任务
		for (Job j : jobList) {
			int i = 1;
			// 通过反射获取任务详情实体类
			Class clazz = Class.forName(j.getJob_class());
			// 4- 新建JobDetail
			JobDetail jobDetail = JobBuilder.newJob(clazz).withIdentity(j.getJob_name(), "jobGroup" + i).build();
			// 5- 新建触发器
			Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger" + i, "triggerGroup" + i)
					.withSchedule(CronScheduleBuilder.cronSchedule(j.getJob_time())).startNow().build();
			// 6- 将任务类 和触发器添加到任务Scheduler
			scheduler.scheduleJob(jobDetail, trigger);
			// 7- 启动Scheduler
			scheduler.start();
			log.info("添加定时任务[jobName] -  "+j.getJob_name()+" [jobClass] - "+j.getJob_class());
			i++;
		}
	}

	
}
4- 在mvc.xml文件中定义bean,利用init-param使spring自动加载启动定时任务

 <!-- 定时任务:要求所有的定时任务在spring启动之后跟着启动 -->  
	<bean init-method="addJob" class="com.lj.vjg.jobs.JobManager" ></bean>  

5- 完成,启动测试。

附1:数据库存储的数据


附2:quartz时间配置

秒(0-59)  分(0-59)  时(0-23)  天(1-31)  月(1-12)   年(1970-2099或不填)
通配符含义:   *  :任意 
  ? :无限制
/  :递增触发
常用示例: 
0 0 12 * * ?   每天12点触发 
0 15 10 ? * * 每天10点15分触发 
0 15 10 * * ? 每天10点15分触发 

 详细可查看(百度来的别人博客):点击打开链接





  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值