我正在尝试从@Scheduled annotation
的属性文件中读取cron表达式。
但是,当我启动服务器时,出现如下错误
Encountered invalid @Scheduled method 'scheduleServicePrincipalOrchestorJob': For input string: "'0
不确定这里发生了什么。
我的注释看起来像-
@Scheduled(cron= "${abc.cronExpression}", zone="America/Los_Angeles")
我的application.properties看起来像
abc.cronExpression="0 8 0 0 0 0"
任何人出了什么问题吗?
从cron表达式中删除引号。另外,某些字段不能为0,因此请从这样的有效表达式开始并根据需要进行调整:
abc.cronExpression = 0 0/5 * * *?
即,每天每5分钟第二个0。
Spring中使用@Scheduled
的cron表达式由以下部分组成:
<second> <minute> <hour> <day-of-month> <month> <day-of-week> <year>
最后一部分<year>
是可选的。
在您的示例中,您将<day-of-month>
和<month>
都使用0,这是不可能的,因为它们不是从0开始而是从1开始。
您的cron进行以下两项调整:
bc.cronExpression=0 8 0 * * 0
*
表示每月的任何一天。
或者您也可以仅在第一个月的第一天使用以下代码执行代码:
bc.cronExpression=0 8 0 1 1 0
有关详细信息,Bealdung将great guide组合到cron表达式中,可以帮助您进一步理解它。