1 SpringBoot-quartz基本用法
添加依赖
1 2 3 4 5 6 7 8 9 10 11
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency>
|
创建任务
创建job
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| @Slf4j public class FirstJob extends QuartzJobBean {
@Override protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { String now = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()); log.info("当前的时间: " + now); } }
@Slf4j public class SecondJob extends QuartzJobBean {
@Override protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { String now = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()); log.info("SecondJob执行, 当前的时间: " + now); } }
|
创建配置类
JobDetail&Trigger该方法实现的定时任务,由spring框架启动线程进行调度。用户不需要自己初始化scheduler并启动线程。
SimpleScheduleBuilder自动配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| @Configuration @Service public class QuartzConfig {
@Bean public JobDetail scheduleJobDetail() { System.out.println("**************************************** scheduler job begin"); JobDetail jobDetail = JobBuilder.newJob(SchedulerJob.class) .withIdentity("schedulerJob") .storeDurably() .build(); System.out.println("**************************************** scheduler job end"); return jobDetail; }
@Bean public Trigger scheduleJobDetailTrigger() { Trigger trigger = TriggerBuilder .newTrigger() .forJob(scheduleJobDetail()) .withIdentity("schedulerJob") .withSchedule(SimpleScheduleBuilder.simpleSchedule().withRepeatCount(0)) .startNow() .build(); System.out.println("schedulerJob trigger end"); return trigger; }
|
CronScheduleBuilder手动配置
使用ApplicationRunner方法启动了一个线程运行程序。手动创建scheduler加载配置、JobDetail、Trigger然后启动任务。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| @Component public class JobInit implements ApplicationRunner {
private static final String ID = "SUMMERDAY";
@Autowired private Scheduler scheduler;
@Override public void run(ApplicationArguments args) throws Exception { JobDetail jobDetail = JobBuilder.newJob(FirstJob.class) .withIdentity(ID + " 01") .storeDurably() .build(); CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ? *"); Trigger trigger = TriggerBuilder.newTrigger() .forJob(jobDetail) .withIdentity(ID + " 01Trigger") .withSchedule(scheduleBuilder) .startNow() .build(); scheduler.scheduleJob(jobDetail, trigger); } }
|
2 使用Spring提供的工厂Bean进行配置
根本找到相关的教程。这都是什么东西啊???
添加依赖
同上
创建任务
同上
使用工厂bean