## 1 SpringBoot-quartz基本用法
### 添加依赖
```xml
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-quartz
```
### 创建任务
创建job
```java
@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自动配置
```java
@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然后启动任务。
```java
@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