springboot+maven+quartz 定时任务

small_Sun

关注

阅读 37

2022-01-12

pom

<!-- 定时器 -->
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.0</version>
</dependency>

util

import com.cei.xyd_cz.web.TestTimer;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

@Component
public class TestScheduler implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {
        appStart();
    }

    /**
     * 定时任务调度器,具体给定执行的时间和频率设置
     *
     * @throws SchedulerException
     * @throws InterruptedException
     */
    public void appStart() throws SchedulerException, InterruptedException {
        // 1、创建调度器Scheduler
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();
        // 2、创建JobDetail实例,并与PrintWordsJob类绑定(Job执行内容)
        JobDetail jobDetail = JobBuilder.newJob(TestTimer.class)
                .withIdentity("job1", "group1").build();
        // 3、构建Trigger实例,按照cron表达式执行 在线表达式网址:https://cron.qqe2.com/
        CronTrigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("trigger1", "triggerGroup1")
                .usingJobData("trigger1", "这是jobDetail1的trigger")
                .startNow()//立即生效
                .withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ? "))
                .build();
        //4、执行
        scheduler.scheduleJob(jobDetail, trigger);
//        LoggerUtil.info("--------scheduler start ! ------------");
        System.out.println("--------scheduler start ! ------------");
        scheduler.start();

        //睡眠
       /* TimeUnit.MINUTES.sleep(1);
        scheduler.shutdown();
        System.out.println("--------scheduler shutdown ! ------------");*/

    }
}

业务

import com.cei.xyd_cz.util.LoggerUtil;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.Date;

@Component
public class TestTimer implements Job {

    /**
     * 定时器具体要执行的逻辑
     * @param jobExecutionContext
     * @throws JobExecutionException
     */
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        //打印当前的执行时间 例如 2017-11-22 00:00:00
        Date date = new Date();
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        LoggerUtil.info("定时器测试——现在的时间是:"+ sf.format(date));
    }

}

精彩评论(0)

0 0 举报