如何在可獨立執行的SpringBoot 的 Jar中添加Spring屬性

問題描述

在使用Maven和Gradle插件生成,獨立運行的SpringBoot Jar 的之後,在類Unix的系統中,可以直接的通過 ./myapp.jar 的方式運行,但是如何去指定 -D 屬性呢?例如

-Dspring.profiles.active=test

解決方案

本文介紹解決的思路有如下三種:

  1. 同可獨立執行的Jar同目錄下,定義一個配置文件
  2. 在Shell 命令行中指定需要定義的屬性
  3. 直接運行java -jar 方式指定SpringBoot配置(推薦)

指定獨立的配置文件

將你需要指定的屬性,添加到一個獨立的配置文件中,該配置文件名類似於 JARfilename.conf這種。啓動的獨立運行的Jar需要與conf後綴的配置文件處在同一級別的目錄下。

如下,你可以添加一些環境變量到JAVA_OPTS屬性中。例如

JAVA_OPTS="-Dpropertykey=propvalue"

在可獨立執行的Jar前面添加變量

JAVA_OPTS="-Dpropertykey=propvalue" ./myapp.jar

命令行中指定

在命令行中,默認的SpringApplication 會自動的轉換以--開頭的屬性到Spring的環境中。所以,可以通過這種方式從命令行,傳遞參數到Spring環境,或者覆蓋原有的參數。

 java -jar myapp.jar --spring.datasource.password=123456

在SpringBoot2.x中, 如果在Build.gradle中在BootJar的task中添加了launchScript() 任務,也可以如下的執行jar包。

./myapp.jar --spring.datasource.password=123456

參考文獻

  1. Spring boot running a fully executable JAR and specify -D properties - Stack Overflow
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章