spring 引导命令行 cron 表达式 java.lang.IllegalStateException
spring boot cmd line cron expression java.lang.IllegalStateException
我对我的 Spring Boot 驱动的 Web 应用程序有异议。我试图从命令行覆盖 @Scheduled cron 表达式,但 spring 以 java.lang.IllegalStateException.
响应
Initialization of bean failed;
nested exception is java.lang.IllegalStateException:
Encountered invalid @Scheduled method 'work':
Cron expression must consist of 6 fields (found 1 in "0")
我有一个带有预定注释的 Spring 组件:
@Scheduled(cron="${myapp.cron}")
public void work() {
...
}
有一个这样的 application.properties 文件:
myapp.cron=0 0 1 * * *
我正在将应用程序与 Maven 捆绑到一个 jar 文件中。该应用程序在 ubuntu 机器上运行,Java 8 作为初始化任务 (/etc/init/myapp.conf)。
description "My app"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
respawn limit 10 5
setuid <USER>
setgid <GROUP>
script
java -Xms2G -Xmx2G -jar /opt/myapp.jar \
--server.port=4014 \
--server.address=127.0.0.1
--logging.file=/opt/myapp.log \
--logging.level.root=INFO
end script
到目前为止一切都很好。添加以下行会出现上述异常。
--myapp.cron=0 0 8 * * *
有什么想法吗?怎么了?
干杯,
凯
凯,
您将 0 0 8 * * *
作为命令行参数传递,以便在 Spring 环境中获取它。但是,您的应用仅获取第一个 0
作为变量值,因此所需的 6 个部分除外。用引号将值括起来:
--myapp.cron="0 0 8 * * *"
在 src/main/resouce 文件夹下创建一个 xyz.properties 文件。
cron.open.status.mgr.schedule=10 15 0 15 * ?
并执行如下操作
@Component
public class OpenStatusManagerScheduler {
@Scheduled(cron = "${open.status.mgr.schedule}")
public void scheduleStatusTaskWithCronExpression() {}
}
我对我的 Spring Boot 驱动的 Web 应用程序有异议。我试图从命令行覆盖 @Scheduled cron 表达式,但 spring 以 java.lang.IllegalStateException.
响应Initialization of bean failed;
nested exception is java.lang.IllegalStateException:
Encountered invalid @Scheduled method 'work':
Cron expression must consist of 6 fields (found 1 in "0")
我有一个带有预定注释的 Spring 组件:
@Scheduled(cron="${myapp.cron}")
public void work() {
...
}
有一个这样的 application.properties 文件:
myapp.cron=0 0 1 * * *
我正在将应用程序与 Maven 捆绑到一个 jar 文件中。该应用程序在 ubuntu 机器上运行,Java 8 作为初始化任务 (/etc/init/myapp.conf)。
description "My app"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
respawn limit 10 5
setuid <USER>
setgid <GROUP>
script
java -Xms2G -Xmx2G -jar /opt/myapp.jar \
--server.port=4014 \
--server.address=127.0.0.1
--logging.file=/opt/myapp.log \
--logging.level.root=INFO
end script
到目前为止一切都很好。添加以下行会出现上述异常。
--myapp.cron=0 0 8 * * *
有什么想法吗?怎么了?
干杯, 凯
凯,
您将 0 0 8 * * *
作为命令行参数传递,以便在 Spring 环境中获取它。但是,您的应用仅获取第一个 0
作为变量值,因此所需的 6 个部分除外。用引号将值括起来:
--myapp.cron="0 0 8 * * *"
在 src/main/resouce 文件夹下创建一个 xyz.properties 文件。
cron.open.status.mgr.schedule=10 15 0 15 * ?
并执行如下操作
@Component
public class OpenStatusManagerScheduler {
@Scheduled(cron = "${open.status.mgr.schedule}")
public void scheduleStatusTaskWithCronExpression() {}
}