快捷搜索: 王者荣耀 脱发

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..net/zhaoqiangbo/article/details/113725486
经验分享 程序员 微信小程序 职场和发展