SpringBoot调度
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SpringBoot调度
调度是执⾏特定时间段的任务的过程。Spring Boot为在Spring应⽤程序上编写调度程序提供了很好的⽀持。
Java Cron表达式
Java Cron表达式⽤于配置CronTrigger的实例,它是org.quartz.Trigger的⼦类。有关Java cron表达式的更多信息,请参阅此链接 -
注解⽤于为应⽤程序启⽤调度程序。将此批注添加到主Spring Boot应⽤程序类⽂件中。
@SpringBootApplication
@EnableScheduling
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
Java
注解⽤于在特定时间段内触发调度程序。
@Scheduled(cron = "0 * 9 * * ?")
public void cronJobSch() throws Exception {
}
Java
以下是⼀个⽰例代码,演⽰如何在每天上午9:00开始到每天上午9:59结束执⾏任务。
package com.yiibai.demo.scheduler;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import ponent;
@Component
public class Scheduler {
@Scheduled(cron = "0 * 9 * * ?")
public void cronJobSch() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date now = new Date();
String strDate = sdf.format(now);
System.out.println("Java cron job expression:: " + strDate);
}
}
Java
以下屏幕截图显⽰了应⽤程序如何在09:03:23启动,并且从那时起每隔⼀分钟执⾏⼀次cron作业调度程序任务。
固定速率
固定速率调度程序⽤于在特定时间执⾏任务。它不等待前⼀个任务的完成。值是以毫秒为单位。⽰例代码显⽰在此处 -
@Scheduled(fixedRate = 1000)
public void fixedRateSch() {
}
Java
此处显⽰了应⽤程序启动时每秒执⾏任务的⽰例代码 -
package com.yiibai.demo.scheduler;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import ponent;
@Component
public class Scheduler {
@Scheduled(fixedRate = 1000)
public void fixedRateSch() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date now = new Date();
String strDate = sdf.format(now);
System.out.println("Fixed Rate scheduler:: " + strDate);
}
}
Java
请注意以下屏幕截图,其中显⽰了在09:12:00启动的应⽤程序,之后每隔⼀个固定速率调度程序执⾏任务。
固定延迟
固定延迟调度程序⽤于在特定时间执⾏任务。它应该等待上⼀个任务完成。值应以毫秒为单位。此处显⽰⽰例代码 -@Scheduled(fixedDelay = 1000, initialDelay = 1000)
public void fixedDelaySch() {
}
这⾥,initialDelay是在初始延迟值之后第⼀次执⾏任务的时间。
从应⽤程序启动完成3秒后每秒执⾏⼀次任务的⽰例如下所⽰ -
package com.yiibai.demo.scheduler;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import ponent;
@Component
public class Scheduler {
@Scheduled(fixedDelay = 1000, initialDelay = 3000)
public void fixedDelaySch() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date now = new Date();
String strDate = sdf.format(now);
System.out.println("Fixed Delay scheduler:: " + strDate);
}
}
Java
执⾏上⾯代码后,它会显⽰在09:18:39开始的应⽤程序,每3秒后,固定延迟计划程序任务(每秒执⾏⼀次)。