0

我有这样的代码:

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但我想从属性中获取这个值。
有办法吗?

附言

我知道我不能使用注释并像这样重写它:

LockingTaskExecutor executor = new DefaultLockingTaskExecutor(lockProvider);

...

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

但我更喜欢使用注释。

4

1 回答 1

2

您可以使用 spring 中的注入语法将您的属性直接注入注解中${propertyName:defaultValue}

注意1:当没有声明a时defaultValue,如果属性缺失,那么spring会抛出错误。

注意 2:几乎所有 spring-annotation 都可以使用此语法。

于 2019-02-20T13:08:59.027 回答