定时任务Quartz

quartz是一个功能丰富的开源作业调度库

  1. 添加pom依赖

    <dependency>    <groupId>org.spring work.boot</groupId>    <artifactId>spring-boot-starter-quartz</artifactId></dependency>
  2. 创建定时Job

    • 通过普通JavaBean创建,添加@Component注解将之注册到容器
    /** * @author wsyjlly * @create 2019.07.17 - 14:40 **/@Componentpublic class ScheduleDemo2 {    public void schedule(){        System.out.println("ScheduleDemo2.schedule...");    }}
    • 通过继承抽象类QuartzJobBean创建,该方式需要实现该类中的executeInternal方法,该方法在任务被调用时使用。
    /** * @author wsyjlly * @create 2019.07.17 - 14:40 **/public class ScheduleDemo3 extends QuartzJobBean {    private String name;    public void setName(String name){        this.name = name;    }    @Override    protected void executeInternal(JobExecutionContext jobExecutionContext){        System.out.println("ScheduleDemo3.executeInternal..."+name);    }}
  3. 创建Quartz配置类QuartzConfig对Job进行配置

    /** * @author wsyjlly * @create 2019.07.17 - 14:47 **/@Configurationpublic class QuartzConfig {        @Bean    MethodInvokingJobDetailFactoryBean jobDetail1(){        MethodInvokingJobDetailFactoryBean bean = new MethodInvokingJobDetailFactoryBean();        bean.setTargetBeanName("scheduleDemo2");        bean.setTargetMethod("schedule");        return bean;    }        @Bean    JobDetailFactoryBean jobDetail2(){        JobDetailFactoryBean bean = new JobDetailFactoryBean();        bean.setJobClass(ScheduleDemo3.class);        JobDataMap jobDataMap = new JobDataMap();        jobDataMap.put("name","ysw");        bean.setJobDataMap(jobDataMap);        bean.setDurability(true);        return bean;    }        @Bean    SimpleTriggerFactoryBean simpleTrigger(){        SimpleTriggerFactoryBean bean = new SimpleTriggerFactoryBean();        bean.setJobDetail(jobDetail1().get ());        bean.setRepeatCount(3);        bean.setStartDelay(1000);        bean.setRepeatInterval(2000);        return bean;    }        @Bean    CronTriggerFactoryBean cronTrigger(){        CronTriggerFactoryBean bean = new CronTriggerFactoryBean();        bean.setJobDetail(jobDetail2().get ());        bean.setCron ("* * * * * ?");        return bean;    }    @Bean    SchedulerFactoryBean schedulerFactory(){        SchedulerFactoryBean bean = new SchedulerFactoryBean();        SimpleTrigger simpleTrigger = simpleTrigger().get ();        CronTrigger cronTrigger = cronTrigger().get ();        bean.setTriggers(simpleTrigger,cronTrigger);        return bean;    }}
收藏 打印