引言
springboot支持多種配置文件讀取方式,瞭解這些方式有助於查詢和定位問題以及選擇合適的方式進行開發。
一、配置文件位置
springboot默認的配置文件是application.properties,其存放的位置可以有以下幾種,從上到下按照優先級排序如下,注意,當存在重複的配置文件時,高優先級的的將會覆蓋低優先級的。
- 當前jar包所在目錄下的config目錄
- 當前jar所在目錄
- classpath下的config目錄
- classpath根路徑
二、自定義配置文件
若不想使用默認的application.properties配置文件,也可以自定義配置文件名,有兩種方式:
- 在啓動springboot應用時傳入如下參數表示使用根路徑下的application1.properties和application2.properties。
spring.config.location=classpath:application1.properties,classpath:application2.properties
- 使用@PropertySource註解來選擇自定義的配置文件,例如如下表示讀取根路徑下的myconfig目錄下的test.properties配置文件
@PropertySource("classpath:myconfig/test.properties")
三、屬性注入
@Component
配置@Value
將屬性值進行注入@Component
或者@Configuration
配合@ConfigurationProperties(prefix = "codingway")
註解在類上,將能夠將屬性名稱爲codingway.name的屬性注入到name字段中,prefix表示配置項的前綴爲codingway
@Component
@ConfigurationProperties(prefix = "codingway")
public class Configuration {
private String name;
//need set and get method
}
這裏可以一次性將所有的配置全部加載進入配置文件,然後在使用到的類中注入Configuration 實例,使用get方法獲取屬性。
四、配置多環境
在實際工作中,需要根據開發、測試和生產配置不同環境的配置文件。可以在合適的路徑下(見第一節配置文件位置)存放application-dev.properties,application-test.properties,application-prod.properties
三個配置文件分別代表三個不同的環境,在springboot應用啓動時傳入指定的參數,例如--spring.profiles.active=prod
指定使用application-prod.properties
文件,另外也可以採用將spring.profiles.active=prod
配置到系統環境變量中,使用--spring.config.location=../config/application-{spring.profiles.active}.properties
,springboot還支持加載多個不同的配置文件,例如
--spring.profiles.active=prod,test