SpringBoot多種環(huán)境自由切換的實(shí)現(xiàn)
yml配置文件很好用,但是實(shí)際生產(chǎn)中會有很多問題。
- 測試是一套配置,生產(chǎn)是一套配置;不同人開發(fā)不同的模塊,共用一個(gè)yml文件容易發(fā)生沖突;
- 本地開發(fā)需要本地化配置調(diào)試,本節(jié)咱們就把這些頭疼的問題統(tǒng)統(tǒng)解決掉。
首先我們建立一個(gè)工程,將
application.properties文件后綴改成application.yml。
name: 張三
lesson: springboot
desc: ${name}同學(xué)正在努力學(xué)習(xí)${lesson}!!! #占位符
DemoController.java
@RestController
@RequestMapping("demo")
public class DemoController {
@Resource
private YmlData ymlData;
@GetMapping("test")
public void test() throws JsonProcessingException {
System.out.println(ymlData.getDesc());
}
}
YmlData.java
@Data
@Component
public class YmlData {
@Value("${name}")
private String name;
@Value("${lesson}")
private String lesson;
@Value("${desc}")
private String desc;
}
瀏覽器請求下
http://localhost:8080/demo/test看看控制臺,亂碼
設(shè)置編碼格式,ide-->file-->setting-->editor-->file encodings

設(shè)置完成后application.yml徹底亂碼了,重新輸入,改完重啟,再請求一次,控制臺輸出:
張三正在努力學(xué)習(xí)springboot!!!
這些跟多環(huán)境配置有什么關(guān)系?
application-prod.yml
name: 張三prod
lesson: springboot
desc: ${name}正在努力學(xué)習(xí)${lesson}!!!
application-dev.yml
name: 張三dev
lesson: springboot
desc: ${name}正在努力學(xué)習(xí)${lesson}!!!
application.yml
spring:
profiles:
active: dev #多環(huán)境變量的精髓,這里確定是加載哪個(gè)配置文件?。?!
好了,現(xiàn)在重啟,在執(zhí)行一次請求,控制臺輸出的是什么?
張三dev正在努力學(xué)習(xí)springboot!!!
那在調(diào)試的時(shí)候是否可以選擇加載哪個(gè)配置文件呢?,按下圖所示操作

重啟,看看現(xiàn)在打印的是什么?
張三prod正在努力學(xué)習(xí)springboot!!!
再增加一個(gè)application-test.yml
name: 張三test
修改application.yml如下:
spring:
profiles:
include: test,prod #包含哪些配置
active: dev #多環(huán)境變量的精髓,這里確定是加載哪個(gè)配置文件?。?!
重新啟動工程看看打印出來什么?
張三prod正在努力學(xué)習(xí)springboot!!!
從結(jié)果我們可以看出,包含了include在內(nèi)的配置,且相同配置在include的文件中使用的最后一個(gè)生效的。
而active文件中即使具有相同的配置(本文中的name配置)也沒有被覆蓋,另外include中包含的配置文件沒有的配置,會在active中補(bǔ)充上來。
總結(jié)來說:include和active取并集,相同的配置以include中的最后一個(gè)為準(zhǔn)!
到此這篇關(guān)于SpringBoot多種環(huán)境自由切換的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot 環(huán)境切換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring MVC中使用Controller如何進(jìn)行重定向
這篇文章主要介紹了Spring MVC中使用Controller如何進(jìn)行重定向操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Spring Security登錄接口兼容JSON格式登錄實(shí)現(xiàn)示例
前后端分離中,前端和后端的數(shù)據(jù)交互通常是JSON格式,本文主要介紹了Spring Security登錄接口兼容JSON格式登錄實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
JVM分配和回收堆外內(nèi)存的方式與注意點(diǎn)
JVM啟動時(shí)分配的內(nèi)存稱為堆內(nèi)存,與之相對的,在代碼中還可以使用堆外內(nèi)存,比如Netty,廣泛使用了堆外內(nèi)存,下面這篇文章主要給大家介紹了關(guān)于JVM分配和回收堆外內(nèi)存的方式與注意點(diǎn),需要的朋友可以參考下2022-07-07
Mybatis分頁的實(shí)現(xiàn)及使用注解開發(fā)操作
這篇文章主要介紹了Mybatis分頁的實(shí)現(xiàn)及使用注解開發(fā)操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06

