Shedlock: использовать lockAtMostForString из файла свойств - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть такой код:

private static final String FOURTEEN_MIN = "PT14M";
...

@Scheduled(cron = "0 */15 * * * *")
@SchedulerLock(name = "scheduledTaskName", lockAtMostForString = FOURTEEN_MIN, lockAtLeastForString = FOURTEEN_MIN)
public void scheduledTask() {
   // do something
}

Теперь я использую константу для lockAtMostForString, но я хочу взять это значение из свойства для этого.
Есть ли способ сделать это?

PS

Я знаю, что не могу использовать аннотации и переписываю их так:

LockingTaskExecutor executor = new DefaultLockingTaskExecutor(lockProvider);

...

Instant lockAtMostUntil = Instant.now().plusSeconds(600);
executor.executeWithLock(runnable, new LockConfiguration("lockName", lockAtMostUntil));

Но я предпочитаю использовать аннотации.

1 Ответ

0 голосов
/ 20 февраля 2019

Вы можете напрямую добавить свое свойство в аннотацию, используя синтаксис впрыска из пружины ${propertyName:defaultValue}.

Примечание 1. Если не объявить defaultValue, то пружина выдаст ошибку, если свойство отсутствует.

Примечание 2: Этот синтаксис можно использовать практически с каждой весенней аннотацией.

...