Запланированная аннотация и пользовательский StringResolver - PullRequest
0 голосов
/ 06 ноября 2018

у меня несколько пружин @Component каждый из которых содержит @Scheduled(cron="some cron expression") метод.

Мне нужно инициализировать значения cron при запуске приложения из базы данных

Итак, я создал собственную реализацию StringValueResolver, которая выглядит следующим образом:

public class CustomEmbeddedValueResolver implements StringValueResolver {
@Override
public String resolveStringValue(String attribute1){
    // Search DataBase for key attribute1 and return String value of attribute1
    }
...
}

И зарегистрируйте его в

public class CustomScheduledAnnotationBeanPostProcessor extends ScheduledAnnotationBeanPostProcessor {
    @Override
    public void setEmbeddedValueResolver(StringValueResolver resolver)
    {
    this.embeddedValueResolver = new CustomEmbeddedValueResolver(resolver, context);
    } 
...
}

Мои компоненты выглядят как

@Component
@EnableScheduling
public class MyScheduler {
    @Scheduled(cron = "Property1")
    public void method1()
    { }
}

Так что проблема в том, что CustomEmbeddedValueResolver работает нормально. Он ищет базу данных для «Property1» и возвращает строку «0 1 * * * *»

Но запланированные методы не запускались.

Что не так?

Спасибо!

...