springboot启动读取外部配置文件实现方式

 更新时间:2025年09月15日 08:44:49   作者:She_lock  
Spring Boot通过外部配置文件优先级(外部>内部)加载运维定义的配置,需将文件放置在jar包同级或config目录下,相同配置项以外部为准,不同配置项互补生效

有时候,线上的服务器配置,只有运维人员知道,开发人员是不知道的。所以在 springboot项目中,如何解决运行时加载外部运维定义的(没有被打包进jar文件)配置信息呢?

springboot启动读取外部配置文件

springboot 有读取配置文件的方法,如下优先级:

  • 第一种是在jar包的同一目录下建一个config文件夹,然后把配置文件放到这个文件夹下,即./config/目录下。./表示jar包所在目录。
  • 第二种是直接把配置文件放到jar包的同级目录,即./目录下。
  • 第三种在classpath下建一个config文件夹,然后把配置文件放进去。即classpath:/config/目录下。
  • 第四种是在classpath下直接放配置文件。即classpath:/目录下。

知道这个就好办了。

如下图,在jar包文件下,新建config文件夹,同时将线上的配置信息放进去。

  • config文件夹下内容:

最后,在jar包下打开命令窗口,执行如下命令就可以运行程序,并且 引用外部配置文件application.ymlapplication-prod.yml里面的内容了。

特别关注

值得注意的是,我的将代码打包时,也会有一份配置信息。

由于上面提到了,springboot 有读取配置文件有优先级次序。

所以,最后还是为读取到打包进clathpath底下的配置文件application.yml

那么问题又来了,如果外部配置文件,和clathpash的 配置文件,配置信息又相同的部分或是不同的部分,分别时怎么处理的呢?

遵循以下原则:

  • 如果内配置文件里有外配置文件没有的配置,那两者互补。比如外配置文件没有配置数据库,内配置文件里配置了数据库,那内配置文件的配置会被使用。
  • 如果内配置文件里外配置文件里都有相同的配置,比如两者都配置了数据库,但是两个连接的不同,那外配置文件会覆盖内配置文件里的配置。

总结

总结起来就是一句话,内外都有相同的配置信息时听外的,内外有不同的配置信息时都生效。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Servlet实现分页效果

    Servlet实现分页效果

    这篇文章主要为大家详细介绍了Servlet实现分页效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Spring Security使用数据库认证及用户密码加密和解密功能

    Spring Security使用数据库认证及用户密码加密和解密功能

    这篇文章主要介绍了Spring Security使用数据库认证及用户密码加密和解密,本文通过代码与截图的形式给大家介绍的非常详细,对大家的工作或学习具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • SpringBoot CountDownLatch多任务并行处理的实现方法

    SpringBoot CountDownLatch多任务并行处理的实现方法

    本篇文章主要介绍了SpringBoot CountDownLatch多任务并行处理的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • 详解如何更改SpringBoot TomCat运行方式

    详解如何更改SpringBoot TomCat运行方式

    这篇文章主要介绍了详解如何更改SpringBoot TomCat运行方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 深入探究Spring IOC和DI的区别

    深入探究Spring IOC和DI的区别

    很多人都会把ioc和di说成同一个东西,其实IOC和DI虽然在概念上可以笼统地视为同一事物,但其本质上存在区别,因此,我们希望能够更加严谨地区分这两个概念,以更好地理解和应用它们,需要的朋友可以参考阅读本文
    2023-10-10
  •  Java图形化界面编程实现简单计算器

     Java图形化界面编程实现简单计算器

    这篇文章主要介绍了Java图形化界面编程实现简单计算器,下面文章围绕Java图形化界面编程实现简单计算器的相关资料展开详细内容,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-01-01
  • SpringBoot实现发送邮件功能过程图解

    SpringBoot实现发送邮件功能过程图解

    这篇文章主要介绍了SpringBoot实现发送邮件功能过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • SpringBoot集成Redis使用Cache缓存的实现方法

    SpringBoot集成Redis使用Cache缓存的实现方法

    SpringBoot通过配置RedisConfig类和使用Cache注解可以轻松集成Redis实现缓存,主要包括@EnableCaching开启缓存,自定义key生成器,改变序列化规则,以及配置RedisCacheManager,本文为使用SpringBoot与Redis处理缓存提供了详实的指导和示例,感兴趣的朋友一起看看吧
    2024-10-10
  • 解决spring-boot使用logback的大坑

    解决spring-boot使用logback的大坑

    这篇文章主要介绍了解决spring-boot使用logback的大坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • MyBatis中动态SQL的使用指南

    MyBatis中动态SQL的使用指南

    MyBatis 是一个流行的持久层框架,它通过 XML 或注解将接口方法与 SQL 映射在一起,动态 SQL 是 MyBatis 的一大特性,它使得构建灵活的查询变得简单,本文将通过一个 User 表的示例,介绍 MyBatis 中常用的动态 SQL 方法,需要的朋友可以参考下
    2024-09-09

最新评论