簡體   English   中英

將環境變量添加到 Spring 的 application.properties

[英]Adding environment variables to Spring's application.properties

我想從application.properties運行兩個 Amazon S3 的 SDK 信息,但不是將其放入文件中,而是想在運行時添加它們./mvnw spring-boot:run 我看到可以這樣做:

./mvnw spring-boot:run -Dspring-boot.run.arguments="--srp.storage.s3.access-key=FOOBARFOOBAR,--srp.storage.s3.secret-key=foobarfoobarfoobarfoobarfoobar"

我嘗試使用 arguments 周圍的引號運行上面的命令,並且它們之間有/沒有空格。 此外,我嘗試在屬性文件中保留空白值以及完全刪除它們。

# srp.storage.s3.access-key=
# srp.storage.s3.secret-key=
srp.storage.s3.access-key=
srp.storage.s3.secret-key=

我有一個用@ConfigurationProperties("srp.storage")注釋的 class 。 這些嘗試的結果各不相同,從應用程序因 class 未找到屬性而無法啟動,到實際運行但沒有效果。 導致服務器無法啟動的命令變體未在application.properties中指定任何屬性,並嘗試運行帶引號和不帶引號且不帶空格的命令。 它運行但未生效的場景是放置空格。

我知道使用內置的 JAR 文件運行它,但如果可能的話,我希望能夠像這樣運行它,以防止每次我更改某些內容時構建。

還嘗試指定占位符,如此處所示,但同樣沒有成功。 我什至可以使用./mvnw做我想做的事嗎? 還是必須與 JAR 文件一起使用?

srp.storage.s3.access-key=${access-key}
srp.storage.s3.secret-key=${secret-key}
./mvnw spring-boot:run -Dspring-boot.run.arguments="--access-key=FOOBARFOOBAR,--secret-key=foobarfoobarfoobarfoobarfoobar"

使用環境變量解決。 這對我來說已經足夠了。 不用說,您可以為 Spring 的文件和變量中的屬性選擇任何您想要的名稱,只需記住,在 Linux 環境中,您必須將變量名稱設置為全部大寫字母並使用下划線。

.bashrc.zshrc或類似文件中,添加:

export AWS_S3_ACCESS_KEY=FOOBARFOOBAR
export AWS_S3_SECRET_KEY=foobarfoobarfoobarfoobarfoobar

如前所示,在application.properties文件中,添加;

srp.storage.s3.access-key=${AWS_S3_ACCESS_KEY}
srp.storage.s3.secret-key=${AWS_S3_SECRET_KEY}

並正常啟動。 好多了。

如果您使用的是 gradle 並且有可用的bootRun任務,那么您可以將任務配置為讀取在運行任務時傳遞的參數。

將以下內容添加到您的構建文件中。

bootRun {
    if (project.hasProperty('params')) {
        args project.params.split(",")
    }
}

然后您可以運行以下命令。

.\gradlew.bat bootRun -Pparams=--demo.prop=commandlinearg

我有一個注釋如下的字段

@Value("${demo.prop}")
private String prop;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM