3

我试图在我的 spring @Scheduled 方法中定义 cron 详细信息

@Service
@PropertySource("classpath:application.properties")
public class CacheRefreshService {

@Scheduled(cron = "${api.refresh.cron}")
     public void refreshJob() throws Exception {
        LOGGER.info("Started Refresh");
        //do something
     }
}

在我的 application.properties

#Refresh
api.refresh.cron =0 29 11 * * ?

当我与@Scheduled 一起定义 cron 详细信息时,它运行良好。但是当我这样做时,它无法从属性文件中读取值,并引发以下错误。

Caused by: java.lang.IllegalStateException: Encountered invalid @Scheduled method 'refreshJob': Cron expression must consist of 6 fields (found 1 in "${api.refresh.cron}")

请问有什么建议吗?

4

2 回答 2

2

将以下内容添加到我的 ApplicationContext 解决了这个问题..

@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
       return new PropertySourcesPlaceholderConfigurer();
    }
于 2015-12-10T10:01:25.430 回答
1
factoryBean.setCronExpression("0 0/1 * 1/1 * ? *"); 

BeanFactory您必须在Class中设置 Cron Expresssion bcz这setCronExpression是强制性的

于 2019-02-14T13:13:29.157 回答