Spring Scheduler 运行 时如何记录
How to log when Spring Scheduler will run
我正在为 spring 调度程序使用 cron 表达式,表达式的值由 spring bean 使用 spel 动态提供。
@Autowired
private PurgeProperties purgeProperties;
@Scheduled(cron = "#{@purgeProperties.cronExpression}", zone = "#{@purgeProperties.zone}")
public void purgeData() throws UnknownHostException
{
startPurge();
}
一切正常,唯一的问题是我想记录调度程序何时触发,因为 cron 表达式在运行时由另一个 bean 提供。所以只想知道正确的表达式是否将通过文件提供的内容映射到 属性 bean。
试试下面的代码
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.support.CronSequenceGenerator;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.Date;
''''
''''
@PostConstruct
public void init() {
CronSequenceGenerator cronTrigger = new CronSequenceGenerator(purgeProperties.cronExpression);
Date next = cronTrigger.next(new Date());
System.out.println("Next Execution Time: " + next);
}
CronSequenceGenerator 现已弃用。我用过这个:
CronExpression cronTrigger = CronExpression.parse(cronExpression);
var next = cronTrigger.next(LocalDateTime.now());
log.info("Next scheduled start planed at {}", next);
我正在为 spring 调度程序使用 cron 表达式,表达式的值由 spring bean 使用 spel 动态提供。
@Autowired
private PurgeProperties purgeProperties;
@Scheduled(cron = "#{@purgeProperties.cronExpression}", zone = "#{@purgeProperties.zone}")
public void purgeData() throws UnknownHostException
{
startPurge();
}
一切正常,唯一的问题是我想记录调度程序何时触发,因为 cron 表达式在运行时由另一个 bean 提供。所以只想知道正确的表达式是否将通过文件提供的内容映射到 属性 bean。
试试下面的代码
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.support.CronSequenceGenerator;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.Date;
''''
''''
@PostConstruct
public void init() {
CronSequenceGenerator cronTrigger = new CronSequenceGenerator(purgeProperties.cronExpression);
Date next = cronTrigger.next(new Date());
System.out.println("Next Execution Time: " + next);
}
CronSequenceGenerator 现已弃用。我用过这个:
CronExpression cronTrigger = CronExpression.parse(cronExpression);
var next = cronTrigger.next(LocalDateTime.now());
log.info("Next scheduled start planed at {}", next);