quartz定时任务在SpringBoot中的使用

quartz定时任务在SpringBoot中的使用

pom中的依赖包

	 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-quartz</artifactId>
            <version>2.4.5</version>
	</dependency>

简单应用的定时任务

public class MyScheduler {
    public static void main(String[] args) throws SchedulerException, ParseException {

        JobDetailImpl jobDetail = new JobDetailImpl();
        jobDetail.setName("job1");
        jobDetail.setGroup("group1");
        jobDetail.setJobClass(PrintWordsJob.class);

        SimpleTriggerImpl simpleTrigger = new SimpleTriggerImpl();
        simpleTrigger.setName("trigger1");
        //指定Trigger的触发规则
        simpleTrigger.setStartTime(new Date());//开始触发的时间
        simpleTrigger.setRepeatInterval(2000);//每2秒钟触发一次
        simpleTrigger.setRepeatCount(10);//共重复10次


        CronTriggerImpl cronTrigger = new CronTriggerImpl();
        cronTrigger.setName("CronTrigger-Test");
        cronTrigger.setGroup("Test-CronTrigger");
        //指定触发时间的规则:表示2016年1月30日9点08分触发,每3秒钟触发一次,持续一分钟
        cronTrigger.setCronExpression("0/3 * * * * ? *");



 /*     SchedulerFactory schedulerFactory=new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();
        scheduler.scheduleJob(jobDetail,simpleTrigger);
        scheduler.start();*/

        Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.scheduleJob(jobDetail, cronTrigger);
        scheduler.start();
    }

在SpringBoot中的使用

quartz配置类:

@Configuration
public class QuartzConfig {

    @Bean
    public JobDetail checkedJobDetail()
    {
        JobDetail jobDetail = JobBuilder.newJob(SystemCheckedJob.class)
                .withIdentity("checkedJobDetail","CheckedJobDetail")
                .storeDurably() //即使没有Trigger关联时,也不需要删除该JobDetail
                .build();
        return jobDetail;
    }



    @Bean
    public Trigger checkedJobTrigger() {
        //每小时执行一次
        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0 0 * * * ? ");
//        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/10 * * * * ? ");

        //创建触发器
        Trigger trigger = TriggerBuilder.newTrigger()
                .forJob(checkedJobDetail())//关联上述的JobDetail
                .withIdentity("checkedJobTrigger", "CheckedJobTrigger")//给Trigger起个名字
                .withSchedule(cronScheduleBuilder)
                .build();
        return trigger;
    }
}

job类

public class SystemCheckedJob extends QuartzJobBean {
    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
      // 在此处实现具体执行的job任务,例如打印一句话
      System.out.println(“定时任务执行”);
    }
}

SpringBoot自带有定时任务,使用更简单,但没有Quartz灵活
在项目启动类上加:
@EnableScheduling 注解

@EnableScheduling
public class SctjApplication {

    public static void main(String[] args) {
        SpringApplication.run(SctjApplication.class, args);
    }
}

写任务类开始执行

@Component
public class ScheduledTasks {

    /**
     * 每月1号到6号8点30分和23点30分自动备份
     */
    @Scheduled(cron = "0 30 8,23 1,2,3,4,5,6 * ? ")
    public void autoBackups() {
        log.info("自动备份开始:");
        backupsService.backupsAllTables();
        log.info("自动备份完成");
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值