在我们的系统中,我们使用一个设置类来指向属性文件,这取决于它加载不同的属性文件。为了访问特定的属性,我们调用'Settings.getString('property_name_here')‘。
在我的代码中,我将@scheduled cron表达式加载到一个变量,并尝试传递给@scheduled注释,但它不起作用,
下面是我的代码:在属性文件中:
cron.second=0
cron.min=1
cron.hour=14在构造函数中,我有:
this.cronExpression = new StringBuilder()
.append(settings.getString("cron.second"))
.append(" ")
.append(settings.getString("cron.min"))
.append(" ")
.append(settings.getString("cron.hour"))
.append(" ")
.append("*").append(" ").append("*").append(" ").append("*")
.toString();创建了一个字符串"0 1 14 ** *",它是一个有效的con表达式
在计划任务中,我有:
@Scheduled(cron = "${this.cronExpression}")
public void scheduleTask() throws Exception {
....
}当我运行代码时,它抱怨:原因: java.lang.IllegalStateException:遇到无效的@Scheduled方法'scheduleTask':Cron表达式必须由6个字段组成(在“${this.cronExpression}”中找到1)
然后,我将this.cronExpression更改为一个字符串列表:
this.cronExpression = Lists.newArrayList();
this.cronExpression.add(settings.getString("cron.second"));
this.cronExpression.add(settings.getString("cron.min"));
this.cronExpression.add(settings.getString("cron.hour"));
this.cronExpression.add("*");
this.cronExpression.add("*");
this.cronExpression.add("*");但是仍然得到相同的错误,那么cron表达式到底应该是什么呢?
发布于 2018-11-13 20:07:06
我的所作所为对我很管用:
在属性文件中:
my.cron.expression=0 3 * * * ?在代码中:
@Scheduled(cron = "${my.cron.expression}")
public void scheduleTask(){
...
}https://stackoverflow.com/questions/48332442
复制相似问题