在 Spring Boot 中,实现定时任务有多种方式,其中最常用的方式是使用 @Scheduled
注解。通过该注解,你可以在方法上定义定时任务的执行规则。以下是实现定时任务的简单步骤:
-
启用定时任务:
- 在主应用程序类(包含
main
方法的类)上添加@EnableScheduling
注解,以启用 Spring Boot 的定时任务功能。
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
- 在主应用程序类(包含
-
创建定时任务方法:
- 在任何 Spring 管理的 Bean 中创建一个方法,并使用
@Scheduled
注解标记该方法,以定义定时任务的触发规则。
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class MyScheduledTasks { @Scheduled(fixedRate = 5000) // 每隔5秒执行一次 public void myTask() { System.out.println("定时任务执行:" + System.currentTimeMillis()); } }
上述代码中的
myTask
方法将会每隔5秒执行一次。 - 在任何 Spring 管理的 Bean 中创建一个方法,并使用
-
定时任务触发规则:
- 使用
@Scheduled
注解的cron
、fixedDelay
、fixedRate
属性等,可以定义不同的触发规则。cron
:使用 Cron 表达式定义触发规则。fixedDelay
:上一次任务执行完成后,等待指定时间再执行下一次任务。fixedRate
:上一次任务开始执行后,等待指定时间再执行下一次任务。
@Scheduled(cron = "0 0 12 * * ?") // 每天中午12点触发 public void cronTask() { System.out.println("Cron定时任务执行:" + System.currentTimeMillis()); } @Scheduled(fixedDelay = 60000) // 上一次执行完毕后,等待1分钟再执行 public void fixedDelayTask() { System.out.println("Fixed Delay定时任务执行:" + System.currentTimeMillis()); } @Scheduled(fixedRate = 5000) // 上一次任务开始执行后,等待5秒再执行 public void fixedRateTask() { System.out.println("Fixed Rate定时任务执行:" + System.currentTimeMillis()); }
- 使用
以上就是使用 @Scheduled
注解实现定时任务的基本步骤。通过在方法上添加相应的注解,你可以方便地定义不同的触发规则,从而实现定时任务的执行。
Was this helpful?
0 / 0