使用@Scheduled批注的Spring cron不会从属性文件中提取表达式

问题描述 投票:0回答:3

我正在尝试从@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"

任何人出了什么问题吗?

spring spring-boot cron spring-scheduled
3个回答
0
投票

从cron表达式中删除引号。另外,某些字段不能为0,因此请从这样的有效表达式开始并根据需要进行调整:

abc.cronExpression = 0 0/5 * * *?

即,每天每5分钟第二个0。


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表达式中,可以帮助您进一步理解它。


0
投票

也许您可以参考这个。

注释属性Scheduled.cron的值必须是一个常量表达式

https://stackoverflow.com/a/16509088/4258006

© www.soinside.com 2019 - 2024. All rights reserved.