Shedlock:使用 属性 文件中的 lockAtMostForString

Shedlock: use lockAtMostForString from property file

我有这样的代码:

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 使用常量,但我想为此从 属性 中获取这个值。
有办法吗?

P.S.

我知道不能用注解,改写成这样:

LockingTaskExecutor executor = new DefaultLockingTaskExecutor(lockProvider);

...

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

但我更喜欢使用注释。

您可以使用 spring ${propertyName:defaultValue}.

中的注入语法直接将 属性 注入注释

注意 1:当不声明 defaultValue 时,如果缺少 属性,则 spring 将抛出错误。

注意 2:此语法几乎可以与每个 spring-注释一起使用。