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的 配置文件,配置信息又相同的部分或是不同的部分,分别时怎么处理的呢?

遵循以下原则:

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

总结

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

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

相关文章

  • Java利用redis限制用户频繁点击操作

    Java利用redis限制用户频繁点击操作

    文章讨论了如何使用Redis和拦截器来限制用户行为,以保障系统安全,具体来说,作者提出了一种解决方案,包括使用注解来精确限制用户行为,并 使用拦截器记录并处理用户行为,文章还指出,需要添加crosFilter方法来解决拦截器的跨域问题
    2026-04-04
  • Java使用分布式实现数据库读写分离的示例代码

    Java使用分布式实现数据库读写分离的示例代码

    在MySQL中可以通过配置主从复制来实现数据同步,本文主要介绍了Java使用分布式实现数据库读写分离,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • Java中的锁分类的详细介绍

    Java中的锁分类的详细介绍

    这篇文章主要介绍了Java中的锁分类的详细介绍,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 学习Spring-Session+Redis实现session共享的方法

    学习Spring-Session+Redis实现session共享的方法

    本篇文章主要介绍了学习Spring-Session+Redis实现session共享的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Java 高并发八:NIO和AIO详解

    Java 高并发八:NIO和AIO详解

    本文主要介绍Java 高并发NIO和AIO 的知识,这里整理了详细的资料,并详细介绍了 1. 什么是NIO 2. Buffer 3. Channel 4. 网络编程 5. AIO的知识,有需要的小伙伴可以参考下
    2016-09-09
  • springboot集成shiro自定义登陆过滤器方法

    springboot集成shiro自定义登陆过滤器方法

    这篇文章主要介绍了springboot集成shiro自定义登陆过滤器方法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • java 中List按照date排序的实现

    java 中List按照date排序的实现

    这篇文章主要介绍了java 中List按照date排序的实现的相关资料,需要的朋友可以参考下
    2017-06-06
  • 深入理解JDK26支持Http3属性

    深入理解JDK26支持Http3属性

    在JDK 26中,HTTP/3已作为标准特性支持,简化HTTP3请求发起过程,直接利用java.net.http包实现高效网络通信,下面就来详细的介绍一下
    2026-05-05
  • java开发AOP基础JdkDynamicAopProxy

    java开发AOP基础JdkDynamicAopProxy

    这篇文章主要为大家介绍了java开发AOP基础JdkDynamicAopProxy源码示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Spring Security权限注解启动及逻辑处理使用示例

    Spring Security权限注解启动及逻辑处理使用示例

    这篇文章主要为大家介绍了Spring Security权限注解启动及逻辑处理使用示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07

最新评论