在Spring Boot中,定时任务可以使用@Scheduled注解来实现。要使用@Scheduled注解,你需要确保以下几个步骤:
启用定时任务功能
在Spring Boot应用的主类上添加@EnableScheduling注解:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class ScheduledTasksApplication {
public static void main(String[] args) {
SpringApplication.run(ScheduledTasksApplication.class, args);
}
}
创建定时任务方法
在一个Spring管理的bean(例如一个Service类)中创建定时任务方法,并使用@Scheduled注解:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@Service
public class ScheduledTaskService {
@Scheduled(fixedRate = 5000)
public void reportCurrentTime() {
System.out.println("Current time is: " + new java.util.Date());
}
}
在这个示例中,reportCurrentTime
方法每隔5秒钟执行一次。@Scheduled
注解可以接受多种配置参数:
- fixedRate:以固定的时间间隔执行任务(以毫秒为单位)。
- fixedDelay:在前一次调用完成后等待固定的时间间隔再执行任务(以毫秒为单位)。
- initialDelay:在应用启动后等待固定的时间再首次执行任务(以毫秒为单位)。
- cron:使用cron表达式来控制任务执行的时间。
使用cron表达式
你可以使用cron表达式更灵活地控制任务的执行时间。例如,每天晚上10点执行任务:
@Scheduled(cron = "0 0 22 * * ?")
public void scheduledTaskUsingCron() {
System.out.println("Task executed at 10 PM");
}