当项目中使用@Scheduled,如何在项目启动的时候让指定的异步任务提前执行一次?
@Scheduled注解支持多个参数,用于灵活控制任务执行时间
/**
* @Author 码至终章
* @Version 1.0
*/
@Component
public class ScheduledTest {
@Scheduled(cron = "* 1 * * * ?")
public void task1() throws Exception{
System.out.println("task1 执行: " + Thread.currentThread() + "-" + DateTime.now());
}
}
该类主要在启动时手动调用指定的任务方法
/**
* @Author 码至终章
* @Version 1.0
*/
@Component
public class StartupTasks {
private final ScheduledTest scheduledTasks;
public StartupTasks(ScheduledTest scheduledTasks) {
this.scheduledTasks = scheduledTasks;
}
@PostConstruct
public void startUp() {
try {
System.out.println("服务启动执行任务");
scheduledTasks.task1();
}catch (Exception e){
e.printStackTrace();
}
}
}
注:启动类记得自己加上@EnableScheduling,定时任务 才会执行,当然这个不影响本文的逻辑测试
服务启动后,查看打印信息