我有一个方法:
@Scheduled(cron="0 */5 * * * *")
public void syncRoutine() { }
所以它每5分钟运行一次。
是否可以安排一个方法第一次立即运行,然后根据cron运行?
您可以将多个@Scheduled
注释与@Schedules
注释组合:
@Schedules(value = {
@Scheduled(initialDelay = 15_000,
fixedDelay = Long.MAX_VALUE),
@Scheduled(cron = "0 */5 * * * *")
})
public void scheduleFixedDelayTask() {
System.out.println("Fixed delay task - " +
System.currentTimeMillis() / 1000);
}
该任务将在initialDelay
(15秒(值之后首次执行。我们不可能用fixedDelay = Long.MAX_VALUE
重复,因为让cron来做。
OR
您可以同时使用@PostConstruct
和@Scheduled
注释:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class ScheduleClass {
@PostConstruct
public void onStartup() {
scheduleFixedDelayTask();
}
@Scheduled(cron = "0 */1 * * * *")
public void scheduleFixedDelayTask() {
System.out.println("Fixed delay task - " +
System.currentTimeMillis() / 1000);
}
}
通常情况下,您不需要为每5分钟运行一次的任务添加cron,但我假设这是一个示例