使用java -jar修改SpringBoot中application.properties的配置項

java -jar修改SpringBoot中application.properties配置項

如果Spring Boot整合瞭Maven來管理項目依賴的話,常見的打包方式有jar和war。如果使用war包,若要運行項目,需要把war丟到Tomcat、JBoss之類的容器中。

此時修改配置文件,可以直接在解壓後的classes/application.properties文件中修改配置項。

而倘若制作成jar包,如何修改application.properties中的配置項呢?

問題描述

application.properties

application.properties配置文件如下

# config for picket dynamicPool用於上傳圖片,static用於人臉庫以圖搜圖
picket.dynamicFaceLib=1
picket.staticFaceLib=2
picket.similarity=0.7
picket.pushUrl=http://localhost:8080/api/event

比如說Spring Boot項目最後達成瞭jar包platform。則可以如下方式運行

前提

在Windows環境下配置瞭JDK環境變量。

C:\Users\lenovo\Desktop>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.8.0_131

C:\Users\lenovo\Desktop>java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

運行

使用如下方式運行。

java -jar platform.jar

由於制作的jar包不再存在application.properties文件,那麼如何靈活的在命令行運行時指定picket.pushUrl,來修改事件的推送url呢?

解決方式

可以使用如下的方式來修改application.properties配置項的默認值

java -jar platform.jar --picket.pushUrl="http://192.168.1.110:8080/api/eventHappen"

此時便使用瞭修改後的值,而不再是application.properties文件中配置的值。

外部配置

Spring Boot允許使用properties文件、yaml文件或者命令行參數作為外部配置。

Spring Boot是可以基於jar包運行的,打成jar包的程序可以直接通過下面的命令行運(參見Spring Boot實戰p143)

java -jar xx.jar

可以通過如下命令行修改Tomcat端口`

java -jar xx.jar --server.port=9090

Java:java -jar命令講解

1. 當前ssh窗口被鎖定,可按CTRL + C打斷程序運行,或直接關閉窗口,程序退出

#正常啟動jar包
java -jar XXX.jar

#當前ssh窗口被鎖定,可按CTRL + C打斷程序運行,或直接關閉窗口,程序退出。

2. 當前ssh窗口不被鎖定,但是當窗口關閉時,程序中止運行

#當前ssh窗口不被鎖定,但是當窗口關閉時,程序中止運行
java -jar XXX.jar &

3. 當窗口關閉時,程序也不會中止運行

#當用 nohup 命令執行作業時,缺省情況下該作業的所有輸出被重定向到nohup.out的文件中,除非另外指定瞭輸出文件
nohup java -jar XXX.jar &

4. 輸出重定向到temp.file文件

#輸出重定向到temp.file文件
nohup java -jar XXX.jar >temp.txt &

#即輸出內容不打印到屏幕上,而是輸出到temp.file文件中

5. 啟動jar包或war包時,配置靜態變量

#配置靜態變量並不輸出日志到控制臺或者日志文件中
nohup java -jar  /data/server/ifsmp/ifsmp.war --spring.profiles.active=test --server.port=8080 >/dev/null 2>&1 &

# >/dev/null 2>&1 含義:
# 該條shell命令將不會輸出任何信息到控制臺,也不會有任何信息輸出到文件中

# -–spring.profiles.active=test 含義:
#連續的兩個減號–就是對application.properties中的屬性值進行賦值的標識,等價於我們在application.properties中添加屬性spring.profiles.active=test

總結

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: