美文网首页SpringBoot极简教程 · Spring Boot 我爱编程分布式微服务
007SpringBoot之配置文件加载的优先级以及位置

007SpringBoot之配置文件加载的优先级以及位置

作者: 编程界的小学生 | 来源:发表于2018-05-28 11:35 被阅读18次

    一、基础

    1、定义

    之前我们的application.yml/properties文件都放到了classpath:下,然后SpringBoot项目启动后会自动读取并加载,那么这个文件放在哪呢?只能放到classpath:下吗?不是。

    2、位置以及优先级

    SpringBoot启动后会扫描以下位置的application.yml/properties文件作为SpringBoot的默认配置。

    • 1、file:./config/
    • 2、file:./
    • 3、classpath:/config/
    • 4、classpath:/

    优先级由高到低,高优先级的配置会覆盖低优先级的配置;

    二、高级

    1、互补配置

    1.1、定义

    我们上面介绍了配置文件是有优先级的,比如:我们在最高优先级(file:./config/)上配置了端口号,我们又在最低优先级(classpath:/)上配置了访问的域名,则SpringBoot启动的时候会加载全部配置文件不重复的配置项。也就是说会把端口和访问域名都加载进来,低优先级的配置并不会失效。

    1.2、例子

    1.2.1、高优先级的配置(yml)
    server:
      port: 8081
    
    1.2.2、低优先级的配置(properties)
    server.port=8080
    
    # 自定义访问域名
    server.address=www.chentongwei.com
    
    1.2.3、启动后的效果

    端口:8081

    域名:www.chentongwei.com

    2、自定义配置文件加载位置

    1、定义

    若我们不想用以上的目录,该怎么自定义位置呢?可以用spring.config.location=来指定。项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置。但是你指定后,启动SpringBoot并不会生效,是因为启动方式应该是

    java -jar xxx.jar --spring.config.location=E:/application.properties
    

    这样我们启动的时候就会加载E盘的application.properties

    2、例子

    java -jar xxx.jar --spring.config.location=E:/application.properties
    

    3、用途

    我觉得非常好用,这样运维人员部署的时候,直接用一个命令启动起来后,如果发现配置的bug了,直接更改配置文件然后重启jar即可,无需重新打包在部署上线。

    三、广告

    • QQ群【Java初学者学习交流群】:458430385

    • 微信公众号【Java码农社区】

    img
    • 今日头条号:编程界的小学生

    相关文章

      网友评论

        本文标题:007SpringBoot之配置文件加载的优先级以及位置

        本文链接:https://www.haomeiwen.com/subject/yynwjftx.html