Как войти, когда Spring Scheduler запустится
Я использую выражение cron для весеннего планировщика, и значение выражения динамически обеспечивается bean-компонентом Spring с использованием spel.
@Autowired
private PurgeProperties purgeProperties;
@Scheduled(cron = "#{@purgeProperties.cronExpression}", zone = "#{@purgeProperties.zone}")
public void purgeData() throws UnknownHostException
{
startPurge();
}
Все работает правильно, единственное, что я хочу, чтобы войти, когда планировщик сработает, потому что выражение cron предоставляется другим компонентом во время выполнения. Так что просто хотите узнать, отображается ли правильное выражение в том, что было предоставлено через файл в bean-компонент свойства.
2 ответа
Решение
Попробуйте следующий код
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);