quartz与springTask的定时任务

定时任务

一、springTask定时任务

1)新建类,使用注解@Component@org.springframework.scheduling.annotation.EnableScheduling打在类上
2)新建执行方法:使用注解@org.springframework.scheduling.annotation.Scheduled(cron = "0 0 0 * * ?")(每天晚上12点执行);cron表达式可以在线生成,不会写也没有关系;但是注意只有六位,不支持年

秒 分 时 日 月 周

3)可以使用@Autowired注入业务层接口,编写自己的代码……

二、quartz定时任务

1)新建类implements org.quartz.Job@Overrideexecute方法,可以使用jobExecutionContext.getScheduler().getContext()jobExecutionContext.getJobDetail().getJobDataMap()jobExecutionContext.getTrigger().getJobDataMap()来获取业务代码所需要的参数,(使用同一对象传入/获取参数,如:使用任务实例传入,执行时就需要使用任务实例获取)
2)业务类中新建方法,使用org.quartz.impl.StdSchedulerFactory.getDefaultScheduler();获取默认定时任务对象
3)创建触发器和任务对象:

//一分钟后执行
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
Trigger trigger = TriggerBuilder.newTrigger()
        .withIdentity("触发器1" , "触发器分组")
        .startAt(new Date(System.currentTimeMillis() + 60 * 1000))
        .forJob("任务实例1", "任务组")
        .build();
JobDetail job = JobBuilder.newJob(QuotationReservedJob.class)
        .withIdentity("任务实例1", "任务组")
        .usingJobData("param1", "param1")
        .usingJobData("param2", "param2")
        .usingJobData("param3", "param3")
        .build();
scheduler.scheduleJob(job, trigger);
scheduler.start();

4)触发器与任务实例的名称必须唯一,否则多用户执行会报异常
5)触发器中有各种方式去定义如何执行定时任务
6)创建任务实例JobBuilder.newJob(Class<? extends org.quartz.Job> clazz),也就是①中新建的类
7)将任务实例与触发器组合定时任务,start方法启动,shutdown方法终止
8)使用scheduler对象:

  • 根据任务名称和分组,获取org.quartz.JobKey jobKey = org.quartz.JobKey.jobKey(jobName, jobGroup);可以操作已有任务实例
  • 删除scheduler.deleteJob(JobKey var1);
  • 暂停scheduler.pauseJob(JobKey var1);
  • 恢复scheduler.resumeJob(JobKey var1);
  • 运行一次scheduler.triggerJob(JobKey var1);

9)在实现了Job接口的类中,注入service层接口

https://blog.csdn.net/zhaoqiangbo/article/details/113725486

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值