spring @Scheduled with cron无法解析属性

时间:2015-10-07 14:46:14

标签: spring spring-scheduled

我使用的是spring framework v4.1.7并且在调度cron任务时遇到问题,我想在属性文件中定义cron参数。

我的java代码:

@Scheduled(cron = "${invoice.export.cron}")
private void scheduledExport() {
    // ... the code to execute ...
}

在我的属性文件中我有invoice.export.cron: 0 0 7 * * MON-FRI?
为了启用调度,我在主配置类上有@EnableScheduling

我尝试调试此问题,发现应该从属性占位符here解析cron表达式。在调用resolveStringValue之后,我将this位置转到AbstractBeanFactory。而且据我所知,这是问题所在。 this.embeddedValueResolvers列表为空...因此它无法解析我传递给@Scheduled(cron)的属性。

任何人都有一个想法,如果我做错了什么或错过了什么?

提前致谢! :)

1 个答案:

答案 0 :(得分:7)

您是否注册了PropertySourcesPlaceholderConfigurer

  

解决$ {...}的PlaceholderConfigurerSupport的专业化   bean定义属性值和@Value中的占位符   针对当前Spring环境及其集合的注释   PropertySources。

我不确定它是否也适用于@Scheduled,但值得一试

@Configuration
@PropertySource("classpath:whatever.properties")
public class PropertiesWithJavaConfig {

   @Bean
   public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
      return new PropertySourcesPlaceholderConfigurer();
   }
}