我使用的是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)
的属性。
任何人都有一个想法,如果我做错了什么或错过了什么?
提前致谢! :)
答案 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();
}
}