欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring定时任务(Scheduling Tasks)

程序员文章站 2022-05-01 14:25:43
...

1. 开启定时任务(Enable Scheduling)

使用@EnableScheduling注解开启定时任务。

package com.example.schedulingtasks;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
public class SchedulingTasksApplication {

	public static void main(String[] args) {
		SpringApplication.run(SchedulingTasksApplication.class);
	}
}

2. 创建定时任务(Create a Scheduled Task)

创建一个定时任务的组件(加@Component的类),并使用@Scheduled注解标注定时任务的方法。

package com.example.schedulingtasks;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class ScheduledTasks {

	private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class);

	private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

	@Scheduled(fixedRate = 5000)
	public void reportCurrentTime() {
		log.info("The time is now {}", dateFormat.format(new Date()));
	}
}

此示例中使用了 fixedRate,还有别的选项,如 fixedDelay@Scheduled(cron="…") 等。

此时,我们就轻松使用几个注解完成了Spring的定时任务创建。

总结

  1. 在SpringBoot主程序入口中加入@EnableScheduling开启定时任务
  2. 创建一个带有@Component的类,并使用@Scheduled注解标注定时任务的void方法
  3. 在@Scheduled中可设置cron表达式等来设置时间规则