Ошибка при получении значения из файла свойств для @Scheduled fixedRate - PullRequest
0 голосов
/ 19 февраля 2020
private static final String CONSTANT = (p.getProperty("MILLISECONDS_OF_12_HOURS"));

@Scheduled(fixedRateString = CONSTANT)
public void clearCache() throws IOException {


    if(!rrcodeService.cachedAccessGroups.isEmpty()) {
        for (Entry<String, CachedAccessGroups> entry : rrcodeService.cachedAccessGroups.entrySet()) {
            String key = entry.getKey();
            CachedAccessGroups accessGroups = rrcodeService.cachedAccessGroups.get(key);
            if(now.getTime() - accessGroups.getCachedDate().getTime()> Integer.parseInt(p.getProperty("EVICT_CACHE"))) {
                rrcodeService.cachedAccessGroups.remove(key);
            }
        }
    }       
}

Значение для MILLISECONDS_OF_12_HOURS устанавливается во внешнем файле свойств. И я пытаюсь установить это значение FixedRateString. Но выдает ошибку: «Значение атрибута аннотации Scheduled.fixedRateString должно быть константным выражением». Любая помощь будет принята с благодарностью. Спасибо!

1 Ответ

1 голос
/ 19 февраля 2020

Вы можете ввести значения из контекста. Что-то вроде

@Scheduled(fixedRate = "${propertykey.myRate}", initialDelay=1000)
public void clearCache() throws IOException {
   .....
}

и файл свойств (application.properties YAML) определен за пределами

propertykey:
    myRate: 5000

Имейте в виду, что fixedRate в приведенном выше примере принимает long

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