我有几个春季@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 * * * *”
但计划的方法未运行。
怎么了?
谢谢!