新聞中心
小伙伴們都知道,在 Spring Boot 中,配置文件是 application.properties 或者 application.yaml,這個(gè)名為 application 的配置文件,無論是 properties 格式還是 yaml 格式,都會(huì)被 Spring Boot 容器自動(dòng)加載。

然而很多時(shí)候我們會(huì)有一些額外的配置,這些額外的配置可能并非系統(tǒng)配置,所以我們不想將之放在 application.properties 或者 application.yaml 中,想搞一個(gè)單獨(dú)的配置文件來處理,這時(shí)候就分情況了。
1. properties
對(duì)于 properties 格式的配置文件,我們可以隨心所欲的自定義配置文件,例如在 resources 目錄下新建一個(gè) data.properties 的配置文件用來配置數(shù)據(jù)庫的信息,像下面這樣:
db.username=root
db.password=123
db.url=jdbc:mysql:///vhr
然后在 Java 代碼中,利用 @PropertySource 和 @ConfigurationProperties 兩個(gè)注解來加載配置文件:
@PropertySource("classpath:data.properties")
@ConfigurationProperties(prefix = "db")
public class DbProperties {
private String username;
private String password;
private String url;
//省略 getter/setter
}@PropertySource 就是用來加載一個(gè)自定義的 properties 配置文件,這是 Spring 中就有的功能,而不是 Spring Boot 的功能。
所以,如果你使用了 properties 格式的配置文件,那么就可以非常方便的實(shí)現(xiàn)自定義配置文件了,甚至可以將不同的配置文件分門別類,管理的井井有條。
問題實(shí)際上是出在 yaml 這一塊。
2. YAML
小伙伴們知道,對(duì)于 YAML 格式的配置而言,它其實(shí)是沒有一個(gè)類似于 @PropertySource 注解的東西的,也就是說 YAML 配置,你只能寫在 application.yaml 中,不能寫在其他地方。要是寫在其他地方,就沒法加載了,其實(shí)也不是沒法加載,可以自己調(diào)用 snakeyaml 包中的類去加載,但是那樣太費(fèi)事了,所以我們期望能夠有一個(gè)簡(jiǎn)便的辦法來做這件事。
怎么做呢?
我們可以利用 Spring Boot 中對(duì)于 profile 多環(huán)境的處理方式來加載自定義的 YAML 配置。
大家知道,Spring Boot 中對(duì)于多環(huán)境的處理方式非常方便,以 yaml 配置為例,我們只需要定義一個(gè)名為 application-{profile}.yaml 的配置文件,然后在 application.yaml 中就可以指定這個(gè)環(huán)境了,利用這個(gè)漏洞,就可以非常方便的加載自定義的 yaml 配置了,不過這種方式對(duì)自定義的 yaml 配置文件名格式有要求,就是必須是 application-{profile}.yaml 格式的。
我舉一個(gè)簡(jiǎn)單例子吧,例如對(duì)于數(shù)據(jù)庫的配置,我想單獨(dú)搞一個(gè)配置文件,那么我們可以新建一個(gè) application-data.yaml 的配置文件,內(nèi)容如下:
spring:
datasource:
password: 123
username: root
url: jdbc:mysql:///vhr
然后在 application.yaml 中就像設(shè)置環(huán)境一樣引入這個(gè)配置文件,如下:
spring:
profiles:
active: data
這樣就實(shí)現(xiàn)了對(duì)自定義 yaml 配置文件的加載。
如果有多個(gè)自定義的 yaml 配置,那么也可以一起加載,多個(gè)環(huán)境之間用 , 隔開即可。
just this。
小伙伴們都知道吧嘿嘿。
分享題目:說一個(gè)大家都知道的SpringBoot小技巧
URL網(wǎng)址:http://www.dlmjj.cn/article/dpgpphs.html


咨詢
建站咨詢
