我的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)
启,
您正在传递0 0 8 * * *
as命令行参数,以便在Spring环境中获取它。但是,您的应用只会将第一个0
作为变量值,因此有关所需的6个部分的例外情况。改为使用引号括起来:
--myapp.cron="0 0 8 * * *"
答案 1 :(得分:-1)
在src / main / resouce文件夹下创建一个xyz.properties文件。
@Component
public class OpenStatusManagerScheduler {
@Scheduled(cron = "${open.status.mgr.schedule}")
public void scheduleStatusTaskWithCronExpression() {}
}
并执行以下操作
private void loadImageFromStorage(String path)
{
try {
File f=new File(path, "profile.jpg");
Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
ImageView img=(ImageView)findViewById(R.id.imgPicker);
img.setImageBitmap(b);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}