-
Reference
-
Core Features
-
Externalized Configuration
SpringBoot應用可以從properties檔案、yaml檔案、環境變數、命令列引數中得到配置引數。程式碼裡可以使用註解
@Value
讀取配置項的值。配置項引數的載入順序,後載入的屬性,可以覆蓋已載入的同名屬性的值。
- 預設配置,透過
SpringApplication.setDefaultProperties
指定引數值。 - 使用
@PropertySource
指定引數值的來源。 - 配置檔案,比如
application.properties
或者application.yaml
。 - 作業系統的環境變數。
- Java的系統變數,即
System.getProperties()
。 - JNDI方式指定的屬性。
- 為
ServletContext
物件配置的引數。 - 為
ServletConfig
物件配置的引數。 - 使用
SPRING_APPLICATION_JSON
指定的JSON格式的屬性,對應的命令列變數名為spring.application.json
。
使用環境變數,樣例如下:
使用JVM的系統變數,樣例如下:SPRING_APPLICATION_JSON='{"my":{"name":"test"}}' java -jar myapp.jar
使用命令列引數,樣例如下:java -Dspring.application.json='{"my":{"name":"test"}}' -jar myapp.jar
java -jar myapp.jar --spring.application.json='{"my":{"name":"test"}}'
- 命令列引數。
- 使用
@SpringBootTest
指定的引數值。 - 透過使用
@DynamicPropertySource
,在測試程式碼中指定引數。 - 透過使用
@TestPropertySource
,在測試程式碼中指定引數。 - 開發者工具,支援從
$HOME/.config/spring-boot
中載入配置引數。
載入配置檔案的優先順序:
-
Jar檔案內的
application.properties
或者application.yaml
。 -
Jar檔案內的
application-{profile}.properties
或者application-{profile}.yaml
。 -
Jar檔案外的
application.properties
或者application.yaml
。 -
Jar檔案外的
application-{profile}.properties
或者application-{profile}.yaml
。SpringBoot框架載入配置檔案時,優先讀取
properties
格式的同名配置檔案。在啟動類的
main
函式中增加如下程式碼,將顯式禁用命令列引數。SpringApplication.setAddCommandLineProperties(false);
SpringBoot框架載入
application.properties
或者application.yaml
時,搜尋路徑如下:- 類路徑,根路徑。
- 類路徑,
config
包。 - jar檔案所在目錄。
- jar檔案所在目錄的子目錄
config
。 - jar檔案所在目錄的子目錄
config
下的子目錄。
在命令列中增加引數
spring.config.name
,可以指定配置檔案的名稱。java -jar myproject.jar --spring.config.name=myproject
使用上述樣例啟動應用程式,SpringBoot框架將搜尋並載入配置檔案
myproject.properties
或者myproject.yaml
。在命令列中增加引數
spring.config.location
,可以指定配置檔案的搜尋位置,樣例如下:java -jar myproject.jar --spring.config.location=\ optional:classpath:/default.properties,\ optional:classpath:/override.properties
在配置檔名增加字首
optional:
,表示假如找不到該位置的配置檔案,並不影響應用程式啟動,不會導致應用程式啟動失敗。spring.config.additional-location
和spring.config.location
的用途相同。SpringBoot載入配置檔案的方案,靈活、強大,可依據業務特點酌情使用,不要花費過多的時間。
EnvironmentPostProcessor
允許在SpringBoot應用啟動前修改Environment
中定義的屬性的值。Java Config涉及如下註解:
@Value
@ConfigurationProperties
@Configuration
@EnableConfigurationProperties
@Validated
@Valid
@NotNull
需要結合樣例、程式碼定義,深入理解上述註解的使用方法。
- 預設配置,透過
SpringBoot文件之Externalized Configuration的閱讀筆記
相關文章
- SpringBoot文件之IO的閱讀筆記Spring Boot筆記
- SpringBoot文件之Web的閱讀筆記Spring BootWeb筆記
- SpringBoot文件之Developing的閱讀筆記Spring Bootdev筆記
- SpringBoot文件之SpringApplication的閱讀筆記Spring BootAPP筆記
- SpringBoot文件之Profiles的閱讀筆記Spring Boot筆記
- SpringBoot文件之入門的閱讀筆記Spring Boot筆記
- SpringBoot文件之構建包的閱讀筆記Spring Boot筆記
- SpringBoot文件之Build Tool Plugins的閱讀筆記Spring BootUIPlugin筆記
- SpringBoot文件之Jar檔案格式的閱讀筆記Spring BootJAR筆記
- SpringBoot文件之開源軟體依賴的閱讀筆記Spring Boot筆記
- SpringBoot文件之配置引數的後設資料的閱讀筆記Spring Boot筆記
- React Router文件閱讀筆記(上)React筆記
- 閱讀筆記筆記
- 閱讀筆記4筆記
- 閱讀筆記3筆記
- 閱讀筆記5筆記
- 【閱讀筆記:字典】筆記
- 閱讀筆記2筆記
- 閱讀筆記1筆記
- 閱讀筆記8筆記
- 閱讀筆記03筆記
- 閱讀筆記02筆記
- 閱讀筆記7筆記
- gdbOF閱讀筆記筆記
- GoogleNet閱讀筆記Go筆記
- 夢斷程式碼閱讀筆記之六筆記
- JDK原始碼閱讀:String類閱讀筆記JDK原始碼筆記
- JDK原始碼閱讀:Object類閱讀筆記JDK原始碼Object筆記
- SiamRPN++閱讀筆記筆記
- Flownet 2.0 閱讀筆記筆記
- 《Clean Code》閱讀筆記筆記
- 《潮騷》閱讀筆記Ⅱ筆記
- 閱讀影片方法筆記筆記
- Dependencies for Graphs 閱讀筆記筆記
- Keys for graphs閱讀筆記筆記
- JDK原始碼閱讀(7):ConcurrentHashMap類閱讀筆記JDK原始碼HashMap筆記
- JDK原始碼閱讀(5):HashTable類閱讀筆記JDK原始碼筆記
- JDK原始碼閱讀(4):HashMap類閱讀筆記JDK原始碼HashMap筆記