我的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作为init任务(/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 * * *
有任何想法吗?怎么了?
干杯,凯
2 回答
凯
您正在传递
0 0 8 * * *
as命令行参数,以便在Spring环境中获取它 . 但是,您的应用只获得第一个0
作为变量值,因此有关所需6个部分的例外情况 . 改为用引号括起来:在src / main / resouce文件夹下创建一个xyz.properties文件 .
并做下面的事情