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-注释一起使用。
我有这样的代码:
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-注释一起使用。