@ Запланированная аннотация на определенный промежуток времени - PullRequest
0 голосов
/ 09 мая 2019

Я хочу запланировать выполнение задания только на месяц (настраивается) каждый год, и оно должно выполняться каждый день в определенное время (скажем, ежедневно в 01:00 по Гринвичу).Можем ли мы добиться этого в Springboot с помощью аннотации @Schedule?Если нет, что может быть лучшим способом для этого?Я попробовал ниже

@Scheduled(cron = "0 0 1 1/1 * ? *")

Это работает каждый день в 1, но я хочу, чтобы он начал работать, скажем, 10 мая и прекратил работать 10 июня.Время начала и окончания должно быть настраиваемым, чтобы я мог изменить его позже без изменения кода

1 Ответ

1 голос
/ 09 мая 2019

Один, который я хотел бы предложить, выглядит примерно так:

public class Scheduler{

@Value("${your.start.date}")
private String startDate;

@Value("${your.end.date}")
private String endDate;

@Scheduled(cron = "0 0 1 1/1 * ? *")
public void do()
{
    ZonedDateTime startDate = ZonedDateTime.parse(startDate);
    ZonedDateTime endDate = ZonedDateTime.parse(endDate);
    if(ZonedDateTime.now().isAfter(startDate) && ZonedDateTime.now().isBefore(endDate)){
        //do your job here
    }
    //do nothing if condition is not meet
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...