SOFABoot 框架是基于 Spring Boot 的中間件解決方案,其讀取配置文件的方法與 Spring Boot 的邏輯相同,SOFABoot 通過 application.properties 文件實現全局配置。
properties 配置類型
application.properties
中的鍵值對 key-value 主要分為以下兩類:
系統配置:指 key 值是由 SOFABoot 框架指定,并能影響框架運行的配置??稍?properties-系統 中查看所有系統配置項。
自定義配置:指 key 值是由用戶指定,被用戶程序代碼使用的自定義配置,這類配置不會影響 SOFABoot 框架,具體含義與用途完全由用戶決定。
properties 默認配置
properties 文件路徑:
resources/config/application.properties
properties 文件存放路徑的要求為:
在標準 Maven 工程里,配置文件必須存放于上述路徑,以確保應用會將這個文件打包到最終的 JAR 或 War 包中。
在 IDE 中運行時,也需要保證文件能被正確加載到
classpath
中。
properties 主要默認參數
spring.application.name={APPNAME} logging.level.com.alipay.sofa=INFO logging.path=./logs ...
默認參數說明
在默認的 application.properties
中,主要包含以下 3 個參數。
spring.application.name
不可被刪除。
應用名字符僅允許包含 a~z 小寫字母和 “-”,不允許包含任何其他符號。
用于指定應用名稱,應用名稱必須保持 唯一性。SOFABoot 框架以及一些中間件會以此配置值作為應用的名稱,該配置以創建工程時填寫的 artifactId 為默認值。在 RPC 調用、消息投遞時,框架會在框架日志中打印應用名稱,也會在上下文中傳遞。一旦重名,將會導致監控和服務治理時無法區分不同應用的日志。此外,應用代碼也可以利用這個值來做一些跟應用名相關的業務邏輯判斷或者標識區分。
logging.level.com.alipay.sofa=INFO 用于設定當前應用的日志級別,其值可為:
INFO
:默認值,表示基礎信息日志。WARN
:表示警告日志。DEBUG
:表示調試日志。
logging.path=./logs 用于指定 SOFABoot 框架以及各個中間件的日志輸出目錄。
默認為
./logs
,且不建議修改此值。當在本地運行時,日志會輸出到工程的根目錄的 logs 目錄下。
當在 Linux/OS X 下運行時,技術棧會切換到 admin 用戶運行程序,同時日志文件會輸出到
/home/admin/logs
目錄下。
動態修改 properties 配置值
application.properties
:支持所有配置的設置,但卻無法動態指定,文件中的 key-value 一旦硬編碼就無法改變。可以通過
java -D
動態設置參數:對于和工作空間相關的配置等需要動態設置的參數, SOFABoot 支持用-D
參數來動態設置值。該配置方式有下述優勢:可以實現動態調整。
有更高的優先級:當
application.properties
中的 key 和-D
參數的 key 沖突時,-D
參數的值生效。通過
-D
的動態性來覆蓋或者修正硬編碼的配置,可實現靈活部署。
配置示例如下:
java -Dparam1=value2 -Dparam2=value2
properties 配置文件的優先級,可以參考 Spring Boot Reference Guide 中的 Externalized Configuration。
相關閱讀
若您需要在不同工作空間下(如開發、測試、預發布、生產工作空間)提供不同的配置,可參考 技術棧使用指南。