首页 > 解决方案 > Spring Boot 使用 CLI arg 覆盖应用程序属性

问题描述

我有application.properties用于设置默认值的变量:

openvasmd.socket=/usr/local/var/run/openvasmd.sock

我希望能够在应用程序的运行时更改它,如下所示:

java -jar -Dopenvasmd.socket=/var/run/openvasmd.sock application.jar

但是,当我想使用它的值时:

@Value("${openvasmd.socket}")
private String socket;
public String test()  {
        return "gvm-cli --socketpath "+socket;
}

结果是:

gvm-cli 空

谁能给我一个提示我在哪里做错了?

标签: javaspringspring-boot

解决方案


来自https://www.baeldung.com/properties-with-spring

命令行参数的属性

与使用文件相反,属性可以直接在命令行上传递:

java -jar app.jar --property="value"

您也可以通过系统属性执行此操作,这些属性在 -jar 命令之前而不是之后提供

java -Dproperty.name="value" -jar app.jar

推荐阅读