在SpringBoot中开启定时任务
2020-08-20 本文已影响0人
MHLEVEL
在SpringBoot 应用中开启定时任务只需要两步:
step one.
step two.
: )
1、 第一步
好了,第一步是在应用启动类上添加@EnableScheduling
注解来允许当前应用开启定时任务。
package com.mhlevel;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
* @author mhlevel
* @date 2020-08-20 11:44
*/
@SpringBootApplication
@EnableScheduling
public class springbootApplication {
public static void main(String[] args) {
SpringApplication.run(springbootApplication.class, args);
}
}
2、 第二步
第二步是创建一个定时任务的类,它里面可能会包含很多个定时任务(一个任务就是对应到类中的一个方法),注意,这个定时任务类需要用@Component
注解标注,以便Spring 容器能扫描到这个类
BootSchedule.java
package com.mhlevel.schedule;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* @author mhlevel
* @date 2020-08-20 21:19
*/
@Slf4j
@Component
public class BootSchedule {
private final DateTimeFormatter fmt = DateTimeFormatter.ofPattern(
"HH:mm:ss"
);
// 上次任务开始后隔三秒开启下一次任务
@Scheduled(fixedRate = 3000)
public void schedule01(){
log.info("schedule01 -> {}", LocalDateTime.now().format(fmt));
}
// 上次任务执行完毕的时间点之后3s再执行
@Scheduled(fixedDelay = 3000)
public void schedule02(){
log.info("schedule02 -> {}", LocalDateTime.now().format(fmt));
}
// 第一次延后2s 执行,之后每3s 执行一次
@Scheduled(initialDelay = 1000, fixedRate = 3000)
public void schedule03(){
log.info("schedule03 -> {}", LocalDateTime.now().format(fmt));
}
// 每3s 执行一次
@Scheduled(cron = "0/3 * * * * ?")
public void schedule04(){
log.info("shedule04 -> {}", LocalDateTime.now().format(fmt));
}
}
3、 运行测试
运行结果截图