➜ Old React website
Chung Cheuk Hang MichaelJava Web Developer
用 Snyk 掃瞄 Java 項目Spring Boot + Docker + K8s

Spring Boot 配置方式

Table of contents

1 Java app 配置方式

純 Java apps 既配置方式有以下幾種:
  • Environment variables
    • JAVA_TOOL_OPTIONS
  • System properties
  • Command line arguments
  • 自定義檔案
因為係純 Java apps 既關係,所以係由開發者決定個程式要由以上邊一度地方讀取配置,以及配置既優先次序。
簡單黎講:
  • 開發者可以令個程式只由以上既其中一度地方讀取配置,唔理會其他地方既配置。
  • 開發者為左令個程式既配置更加方便、更有彈性,可以支援幾種方式黎讀取配置。
    • 開發者要自己寫讀取配置既邏輯,包括優先次序。

2 Spring Boot 配置方式

Spring Boot 作為一個全面既 application framework,提供左一個讀取配置既規範。
Spring Boot 原生支援既配置方式包括以下幾種(按照優先次序排列):
  1. Command line arguments
  2. System properties
  3. Environment variables
    • JAVA_TOOL_OPTIONS
  4. application 檔(副檔名(按照優先次序):propertiesymlyaml
另外仲有 Spring Cloud Config,可以睇返呢篇:Spring Cloud Config——使用獨立既 Git 配置 repo
當然,作為一個 Java app,我地都仲可以用自定義檔案既方式。

2.1 配置方式詳解

配置方式描述例子
Command line arguments執行 java 既果句 command 裡面 JAR 檔名後面既所有野都係屬於 command line arguments,但 Spring Boot 只會認帶有 -- prefix 既 arguments。Java app 既 main method 要 pass args 入 Spring,即係 SpringApplication.run(MainClass.class, args)java -jar app.jar --server.port=8081
System properties執行 java 既果句 command 裡面既所有 -D options,唔可以放喺 JAR 檔名既後面。如果有幾個相同既 property 名既 -D options,則後者優先。java -Dlogging.level.root=ERROR -Dlogging.level.org.springframework.context=DEBUG -jar app.jar
Environment variables有好多方式去設置佢地,如果計手動既話,就係執行 java command 之前既所有設置 environment variables 既 commands。Windows:set server.port=8081;Linux:export server.port=8081 或者 source env.txt
JAVA_TOOL_OPTIONS係 Java 比較特殊既 environment variable,因為佢會變成 system properties。如果冇辦法用 -D(例如改唔到 Dockerfile 既 ENTRYPOINT),咁就可以用佢。可以用 java -version 檢查。執行 java command 之後都會顯示。Windows:set "JAVA_TOOL_OPTIONS=-Xmx1024m -Dserver.port=8081"
application.ymlapplication-dev.yml 等等係 Spring Boot 默認會讀取既配置檔案,檔案內容既格式可以係 YAML 或者 Java properties(同副檔名一致)。YAML:server.port: 8081;Java properties:server.port=8081

3 參考資料