springboot使用quartz
Jacky
Java
2022-12-01
11
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
java
package com.quartz;
import lombok.extern.slf4j.Slf4j;
import org.quartz.*;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.quartz.QuartzJobBean;
import java.time.LocalDateTime;
@Slf4j
@SpringBootApplication
public class StartAppQuartz {
public static void main(String[] args) {
SpringApplication.run(StartAppQuartz.class, args);
}
@Bean
public JobDetail jobDetail() {
log.info("create jobDetail");
return JobBuilder.newJob(JobDemo.class)
.withIdentity("任务名称")
//即使没有Trigger关联时,也不需要删除该JobDetail
.storeDurably()
.usingJobData("传入参数key", "传入参数值")
.build();
}
@Bean
public Trigger trigger(JobDetail jobDetail) {
log.info("create trigger");
return TriggerBuilder.newTrigger()
.forJob(jobDetail)
.withIdentity("定时器名称")
// 每秒执行一次
.withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ?"))
.build();
}
public static class JobDemo extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext context) {
log.info("定时任务 {}", LocalDateTime.now());
context.getJobDetail().getJobDataMap().forEach((s, o) -> {
log.info("定时任务 {}:{}", s, o);
});
}
}
}