@ConditionalOnProperty с @Scheduled не работает - PullRequest
1 голос
/ 23 октября 2019

Я бы хотел вызвать определенную запланированную функцию, если свойство присутствует.

Мои свойства следующие:

tasks:
    task1:
        interval: "* * * ? * *"
    task2:
        interval: "0 * * ? * *"

Это мои функции:

@Scheduled(cron = "${tasks.task1.interval}")
public void doTask1()
{
    // do something
}

@Scheduled(cron = "${tasks.task2.interval}")
public void doTask2()
{
    // do something
}

Что мне нравится делать, так это то, что doTask2 () не запускается, если свойство task2 не указано.

Свойства:

tasks:
    task1:
        interval: "* * * ? * *"

Функции:

@ConditionalOnProperty(value = "tasks.task1")
@Scheduled(cron = "${tasks.task1.interval}")
public void doTask1()
{
    // do something
}



@ConditionalOnProperty(value = "tasks.task2")
@Scheduled(cron = "${tasks.task2.interval}")
public void doTask2()
{
    // do something
}

Если я попробую эту настройку, я всегда получаю следующую ошибку:

Could not resolve placeholder 'tasks.task2.interval' in value "${tasks.task2.interval}"

1 Ответ

1 голос
/ 23 октября 2019

Из документации Spring :

Специальное значение "-" указывает на отключенный триггер cron, в первую очередь предназначенный для внешних заданных значений, разрешенных с помощью $ {...}placeholder.

Вы можете использовать минус-значение по умолчанию для выражения cron:

@Scheduled(cron = "${tasks.task2.interval:-}")

Более подробную информацию о значениях по умолчанию можно найти здесь .

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