zoukankan      html  css  js  c++  java
  • SpringBoot中各配置文件的优先级及加载顺序

    我们在写程序的时候会碰到各种环境(开发、测试、生产),因而,在我们切换环境的时候,我们需要手工切换配置文件的内容。这大大的加大了运维人员的负担,同时会带来一定的安全隐患。

    为此,为了能更合理地重写各属性的值,SpringBoot通过对数据文件的优先级进行定义,定义了不同的加载顺序,从而解决了这个问题。

    1 在命令行中传入的参数。

    2. SPRING APPLICATION JSON中的属性。 SPRING_APPLICATION—JSON是以JSON格式配置在系统环境变量中的内容。

    3. java:comp/env中的JNDI 属性。

    4. Java的系统属性, 可以通过System.getProperties()获得的内容。

    5 操作系统的环境变量 。

    6 通过random.*配置的随机属性。

    7 位于当前应用 jar 包之外, 针对不同{profile}环境的配置文件内容, 例如application-{profile}.properties或是YAML定义的配置文件。

    8 位于当前应用 jar 包之内 , 针对不同{profile}环境的配置文件内容,例如application-{profile}.properties或是YAML定义的配置文件。

    9 位于当前应用jar包之外的application.properties和YAML配置内容。

    10位于当前应用jar包之内的app口ca巨on.properties和YAL配置内容。

    11在@Configura巨on注解修改的类中,通过@PropertySource注解定义的属性。

    12应用默认属性,使用SpringApplication.setDefaultProper巨es 定义的内容。

    优先级按上面的顺序由高到低, 数字越小优先级越高。

    可以看到,其中第7项和第9项 都是从应用jar包之外读取配置文件,所以,实现外部化配置的原理就是从此切入,为其指定外部配置文件的加载位置来取代jar包之内的配置内容。 通过这样的实现,我们的工程在配置中就变得非常干净,只需在本地放置开发需要的配置即可, 而不用关心其他环境的配置,由其对应环境的负责人去维护即可。

    参考文档:

    《SpringCloud微服务实践》(翟永超)

  • 相关阅读:
    POJ 2987:Firing(最大权闭合图)
    BZOJ 1001:[BeiJing2006]狼抓兔子(最小割)
    HDU 1007:Quoit Design(分治求最近点对)
    POJ 1986:Distance Queries(倍增求LCA)
    HDU 3879 && BZOJ 1497:Base Station && 最大获利 (最大权闭合图)
    BZOJ-1011 遥远的行星
    BZOJ-1044 木棍分割
    BZOJ-1042 硬币购物
    BZOJ-1050 旅行
    BZOJ-1037 生日聚会
  • 原文地址:https://www.cnblogs.com/gudi/p/8878779.html
Copyright © 2011-2022 走看看