多個springboot項目如何使用一個外部共同的application.yml
多個springboot項目使用一個外部共同的application.yml
本來application.yml是放在spring boot項目的resource中。
但是實際使用中,多個項目共同使用一個application.yml文件,所以就把application.yml配置文件放到了tomcat下,項目啟動的時候指向tomcat就行
代碼如下:
public class MyEnvironmentPostProcessor implements EnvironmentPostProcessor { @Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { //tomcat路徑 String property = System.getProperty("catalina.home"); String path = property + File.separator + "conf" + File.separator + "application.yml"; //Springboot讀取yml配置 YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean(); yaml.setResources(new FileSystemResource(path)); MutablePropertySources propertySources = environment.getPropertySources(); propertySources.addFirst(new PropertiesPropertySource("Config", yaml.getObject())); } }
在resources下創(chuàng)建META-INF文件夾,然后創(chuàng)建spring.factories文件,代碼為
org.springframework.boot.env.EnvironmentPostProcessor=com.**.**.config.MyEnvironmentPostProcessor
路徑自定義,不要放到根目錄下。
以上配置即可多個項目使用同一個配置文件啟動。
springboot application.yml的一些加載規(guī)則
SpringBoot是Java后端開發(fā)必須掌握的技術(shù)棧,而application.yml文件作為SpringBoot的核心配置,我們有必要去搞清楚約定的規(guī)則,提高開發(fā)效率。
1.application.yml與application.properties加載順序問題
當(dāng)src/main/resources目錄下同時存在application.yml和application.properties的時候,兩個配置文件中的內(nèi)容都會被加載。
加載順序是:
- 1.application.yml
- 2.application.properties
假設(shè)兩個配置文件中存在相同的配置,那么后加載的將會覆蓋掉先加載的,可以理解為Map的put操作。
PS:
該加載順序規(guī)則同樣適用于application-{profile}.yml和application-{profile}.yml,不過在項目實踐中不建議將yml和properties混用,避免后期維護(hù)起來困難。
2.src/test/resources/application.yml與src/main/resources/application.yml加載順序問題
通常在對SpringBoot應(yīng)用做單元測試時,會在src/test/resources目錄下的新增application.yml,因為測試的配置往往和應(yīng)用的配置存在差異。
當(dāng)@SpringBootTest注解標(biāo)注的類啟動Spring上下文時會先加載src/main/resources/application.yml,然后加載src/test/resources目錄下的application.yml,當(dāng)key相同時后加載的配置將覆蓋先加載的配置。
3.多環(huán)境下的application.yml加載問題
兩種方式:
- 單一application.yml配置方式
spring: profiles: active: local # 啟動哪個環(huán)境的配置,---用來設(shè)置便捷 --- spring: config: activate: on-profile: local server: port: 8080 --- spring: config: activate: on-profile: product server: port: 8081 --- spring: config: activate: on-profile: test server: port: 808
- 多配置文件方式
顯然將多個環(huán)境的配置放在同一份配置文件中,隨著后期配置項的不斷增加,整個配置文件的會顯得非常臃腫,而且本地配置文件和生產(chǎn)配置文件差異可能也較大,后期不同開發(fā)人員維護(hù)起來也比較痛苦。
一個好的辦法是將一個配置文件拆分成多個配置文件,通過這種方式,每個配置文件中寫自己的配置,主配置文件中寫清楚用哪一個配置文件就好了,當(dāng)然如果有些配置項所有環(huán)境都一樣,也可以將這些配置都維護(hù)在主配置文件中。
多環(huán)境配置文件的命名規(guī)則為:application-環(huán)境名.yml
### application.yml主配置文件 spring: profiles: active: dev
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- springboot的application.yml配置port不生效的解決方案
- SpringBoot配置application.yml時遇到的錯誤及解決
- SpringBoot中application.yml配置文件的寫法
- Springboot?application.yml配置文件拆分方式
- SpringBoot中application.properties、application.yaml、application.yml區(qū)別
- Spring Boot 配置文件(application.yml、application-dev.yml、application-test.yml)
- SpringBoot+log4j2.xml使用application.yml屬性值問題
- springboot?log4j2.xml如何讀取application.yml中屬性值
- Spring Boot application.yml配置文件示例詳解
相關(guān)文章
Java中HashSet、LinkedHashSet和TreeSet區(qū)別詳解
這篇文章主要介紹了Java中HashSet、LinkedHashSet和TreeSet區(qū)別詳解,如果你需要一個訪問快速的Set,你應(yīng)該使用HashSet,當(dāng)你需要一個排序的Set,你應(yīng)該使用TreeSet,當(dāng)你需要記錄下插入時的順序時,你應(yīng)該使用LinedHashSet,需要的朋友可以參考下2023-09-09SpringMVC記錄我遇到的坑_AOP注解無效,切面不執(zhí)行的解決
這篇文章主要介紹了SpringMVC記錄我遇到的坑_AOP注解無效,切面不執(zhí)行的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07IDEA安裝部署Alibaba Cloud Toolkit的實現(xiàn)步驟
Alibaba Cloud Toolkit是阿里云針對IDE平臺為開發(fā)者提供的一款插件,本文主要介紹了IDEA安裝部署Alibaba Cloud Toolkit的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下2023-08-08java使用mybatis調(diào)用存儲過程返回一個游標(biāo)結(jié)果集方式
這篇文章主要介紹了java使用mybatis調(diào)用存儲過程返回一個游標(biāo)結(jié)果集方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01