у меня несколько пружин @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 * * * *»
Но запланированные методы не запускались.
Что не так?
Спасибо!