当前位置: 代码网 > it编程>编程语言>Java > 多个springboot项目如何使用一个外部共同的application.yml

多个springboot项目如何使用一个外部共同的application.yml

2024年05月29日 Java 我要评论
多个springboot项目使用一个外部共同的application.yml本来application.yml是放在spring boot项目的resource中。但是实际使用中,多个项目共同使用一个

多个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下创建meta-inf文件夹,然后创建spring.factories文件,代码为

org.springframework.boot.env.environmentpostprocessor=com.**.**.config.myenvironmentpostprocessor

路径自定义,不要放到根目录下。

以上配置即可多个项目使用同一个配置文件启动。

springboot application.yml的一些加载规则

springboot是java后端开发必须掌握的技术栈,而application.yml文件作为springboot的核心配置,我们有必要去搞清楚约定的规则,提高开发效率。

1.application.yml与application.properties加载顺序问题

当src/main/resources目录下同时存在application.yml和application.properties的时候,两个配置文件中的内容都会被加载。

加载顺序是:

  • 1.application.yml
  • 2.application.properties

假设两个配置文件中存在相同的配置,那么后加载的将会覆盖掉先加载的,可以理解为map的put操作。

ps:

该加载顺序规则同样适用于application-{profile}.yml和application-{profile}.yml,不过在项目实践中不建议将yml和properties混用,避免后期维护起来困难。

2.src/test/resources/application.yml与src/main/resources/application.yml加载顺序问题

通常在对springboot应用做单元测试时,会在src/test/resources目录下的新增application.yml,因为测试的配置往往和应用的配置存在差异。

当@springboottest注解标注的类启动spring上下文时会先加载src/main/resources/application.yml,然后加载src/test/resources目录下的application.yml,当key相同时后加载的配置将覆盖先加载的配置。

3.多环境下的application.yml加载问题

两种方式:

  • 单一application.yml配置方式
spring:
  profiles:
    active: local # 启动哪个环境的配置,---用来设置便捷

---
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
  • 多配置文件方式

显然将多个环境的配置放在同一份配置文件中,随着后期配置项的不断增加,整个配置文件的会显得非常臃肿,而且本地配置文件和生产配置文件差异可能也较大,后期不同开发人员维护起来也比较痛苦。

一个好的办法是将一个配置文件拆分成多个配置文件,通过这种方式,每个配置文件中写自己的配置,主配置文件中写清楚用哪一个配置文件就好了,当然如果有些配置项所有环境都一样,也可以将这些配置都维护在主配置文件中。 

多环境配置文件的命名规则为:application-环境名.yml

### application.yml主配置文件
spring:
  profiles:
    active: dev 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com