SpringBoot配置文件加載順序詳解

1、存放目錄

Application屬性文件,按優先級排序,位置高的將覆蓋位置

當前項目目錄下的一個/config子目錄

當前項目目錄

項目的resources即一個classpath下的/config包

項目的resources即classpath根路徑(root)

SpringBoot配置文件加載順序詳解

2、讀取順序

如果在不同的目錄中存在多個配置文件,它的讀取順序是:

1、config/application.properties(項目根目錄中config目錄下)

2、config/application.yml

3、application.properties(項目根目錄下)

4、application.yml

5、resources/config/application.properties(項目resources目錄中config目錄下)

6、resources/config/application.yml

7、resources/application.properties(項目的resources目錄下)

8、resources/application.yml

3、配置文件的生效順序,會對值進行覆蓋

@TestPropertySource 註解

命令行參數

Java系統屬性(System.getProperties())

操作系統環境變量

只有在random.*裡包含的屬性會產生一個RandomValuePropertySource

在打包的jar外的應用程序配置文件(application.properties,包含YAML和profile變量)

在打包的jar內的應用程序配置文件(application.properties,包含YAML和profile變量)

在@Configuration類上的@PropertySource註解

默認屬性(使用SpringApplication.setDefaultProperties指定)

4、配置隨機值

roncoo.secret={random.value} roncoo.number={random.int}

roncoo.bignumber={random.long} roncoo.number.less.than.ten={random.int(10)}

roncoo.number.in.range=${random.int[1024,65536]}

讀取使用註解:@Value(value = "${roncoo.secret}")注:出現黃點提示,是要提示配置元數據,可以不配置

5、屬性佔位符

當application.properties裡的值被使用時,它們會被存在的Environment過濾,所以你能夠引用先前定義的值(比如,系統屬性)

roncoo.name = www.roncoo.com

roncoo.desc = ${roncoo.name} is a domain name

6、其他配置的介紹

端口配置

server.port=9090

時間格式化

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

時區設置


spring.jackson.time-zone=Asia/Chongqing


分享到:


相關文章: