Spring Boot 啓動(二) 配置詳解
Spring 系列目錄(http://www.javashuo.com/article/p-kqecupyl-bm.html)html
- Spring Boot 配置使用
- Spring Boot 配置文件加載流程分析 - ConfigFileApplicationListener
1、Spring Framework 配置
略...java
2、Spring Boot 配置
2.1 隨機數配置
name.value=${random.int}
name.int=${random.int}
name.long=${random.long}
name.uuid=${random.uuid}
name.test1=${random.int(10)}
name.test2=${random.int[10,20]}
2.2 命令參數
java -jar xxx.jar --server.port=8080
2.3 多配置文件
applicaiton-dev.properties # 開發環境
applicaiton-test.properties # 測試環境
applicaiton-prod.properties # 生產環境
配置文件關聯 profile 除了以上方式,還有另外兩種方式:spring
- applicaiton-dev.properties 文件名指定剖面
- applicaiton.properties && spring.profile=dev 文件內容配置 spring.profile
- applicaiton-dev.properties && spring.profile=dev 文件名指定剖面且文件內容配置 spring.profile
2.3 spring.application.json
spring.application.json 或 SPRING_APPLICATION_JSON 定義的 json 字符串。json
java -jar xxx.jar --spring.application.json='{"foo":"bar"}'
2.4 Spring Boot 加載順序
- 命令行傳入的參數。
- SPRING_APPLICATION_JSON 中的屬性。 SPRING_APPLICATION_JSON 是以 JSON 格式配置在系統環境變量中的內容。
- java:comp/env 中的 JNDI 屬性。
- Java 的系統屬性,能夠經過 System.getProperties() 得到的內容操做。
- 系統的環境變量。
- 經過 random.* 配置的隨機屬性。
- 位於當前應用 jar 包以外,針對不一樣 {profile} 環境的配置文件內容,例如 application-{profile}.properties 或是 YAML 定義的配置文件。
- 位於當前應用 jar 包以內,針對不一樣 {profi1e} 環境的配置文件內容,例如 application-{profile}.properties 或是 YAM 定義的配置文件。
- 位於當前應用 jar 包以外的 application.properties 和 YAML 配置內容。
- 位於當前應用 jar 包以內的 application.properties 和 YAML 配置內容。
- 在 @Configuration 註解修改的類中,經過 @PropertySource 註解定義的屬性。
- 應用默認屬性,使用 SpringApplication.setDefaultProperties 定義的內容。
以上配置屬性加載類以下:app
- 第一項是在 prepareEnvironment -> configureEnvironment -> configurePropertySources 定義的 CommandLinePropertySource。
- 第二項是在 spring.factories 中定義的 SpringApplicationJsonEnvironmentPostProcessor 處理,也實現了 EnvironmentPostProcessor 接口,優先級高於 ConfigFileApplicationListener。
- 第三-五項是 Spring Framework 標準的屬性,初始化 Environment 時配置。
- 第六項是在 ConfigFileApplicationListener 中定義的 RandomValuePropertySource。
- 第七-十項是在 ConfigFileApplicationListener 中加載配置文件,也實現了 EnvironmentPostProcessor 接口。
天天用心記錄一點點。內容也許不重要,但習慣很重要!dom