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

为此,为了能更合理地重写各属性的值,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微服务实践》(翟永超)

转载于:https://www.cnblogs.com/gudi/p/8878779.html

SpringBoot中各配置文件的优先级及加载顺序相关推荐

  1. Spring Boot中的配置文件使用以及重新加载

    Spring Boot中的配置文件使用以及重新加载 概要 本教程将展示如何通过Java configuration和@PropertySource或XML和property-placeholder在S ...

  2. 3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)

    1.外部配置加载顺序 SpringBoot也可以从以下位置加载配置: 优先级从高到低 高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置  1.命令行参数 所有的配置都可以在命令行上进行指定 ...

  3. java webinf lib jar_java web项目中classes文件夹下的class和WEB-INF/lib中jar里的class文件加载顺序...

    如果是发布到weblogic的话,可以在WebContent\WEB-INF\weblogic.xml里面配置. 参考配置如下: xmlns:xsi="http://www.w3.org/2 ...

  4. SpringBoot配置加载顺序

    文章目录 前言 一.Spring Boot 配置优先级 二.命令行参数 示例 1 配置文件 示例 2 三.示例分析 前言 Spring Boot 不仅可以通过配置文件进行配置,还可以通过环境变量.命令 ...

  5. SpringBoot_配置-外部配置加载顺序

    接下来我们再来看SpringBoot的一个特点,外部配置的加载顺序,也就是说,SpringBoot我们要写一些配置,配置可以写在我们的配置文件,application.properties,放到类路径 ...

  6. Spring Boot配置加载顺序

    Spring Boot 不仅可以通过配置文件进行配置,还可以通过环境变量.命令行参数等多种形式进行配置.这些配置都可以让开发人员在不修改任何代码的前提下,直接将一套 Spring Boot 应用程序在 ...

  7. 加载顺序_JAVA类代码块和属性的加载顺序问题,不要以为静态块始终最先执行了!...

    类代码块和属性的加载顺序问题,不要以为静态块始终最先执行了! 我们知道在一个类中,类的加载顺序为 静态代码块-->普通代码块-->构造代码块,感觉静态块始终是最先初始化的,其实并不是,下面 ...

  8. springboot配置文件加载顺序_「SpringBoot系列」配置文件加载优先级解析

    SpringBoot提供了外部分配置功能,可以使用属性文件(properties).YAML(yml)文件.环境变量和命令行参数来进行处部参数配置,并t以特定的顺序来处理配置,以便于允许合理的覆盖值. ...

  9. springboot配置文件加载顺序

    1.同一目录下,properties配置优先级 > YAML配置优先级. 2.SpringBoot配置文件可以放置在多种路径下,不同路径下的配置优先级有所不同.可放置目录(优先级从高到低) fi ...

最新文章

  1. 一文解析|首个上榜科创板的机器人企业,江苏北人“闯关记”
  2. (6)javascript的程序控制结构及语句-----(1)条件判断
  3. 《STL源码剖析》学习--六大组件
  4. Codeigniter 用户登录注册模块
  5. ie禁止html复制元素,JavaScript_禁止选中文字兼容IE、Chrome、FF等,复制代码 代码如下: $(el).attr('u - phpStudy...
  6. objective-c 2.0编程语言,Objective-C 2.0程序设计(原书第2版) 中文PDF扫描版[15MB]
  7. 谷歌SEO和百度SEO的区别
  8. Nim 游戏 、⽯头游戏1、石头游戏2
  9. Dapr微服务应用开发系列2:Hello World与SDK初接触
  10. Post请求中加不加@RequestBody的区别和formedata与JSON传递的区别
  11. [开发笔记]-判断当前是否联网
  12. Asp.Net 网站一键部署技术(下)
  13. 【c语言复习笔记】初始c源程序及其数据类型
  14. Deep Learning for NLP Best Practices
  15. [翻译] Canvas 不用写代码的动画
  16. 【原创】CSS3动画总结对比 / 带思维导图 / 启发小案例
  17. 远程计算机上不接受445端口,服务器禁止远程445端口
  18. python排版_python排版
  19. indexOf()用法
  20. mysql统计类似SQL语句查询次数

热门文章

  1. php yii2 获取表里最大的id_Yii2中自带分页类实现分页
  2. 在struts2中push方法的使用_电脑使用中怎么截屏的几种方法
  3. c语言算ex自定义函数,用C语言写定积分的通用函数:sin(x),cos(x),eX.
  4. mysql strtok,strtok()和strtok_r()
  5. 折线图表android,Android 折线图表MPAndroidChart的实现
  6. android活动开始,android – 点击谷歌地图标记infoWindow开始活动
  7. 获取人口_「微科普」14亿人口数据是如何得到的?
  8. MongoDB 自动删除集合中过期的数据——TTL索引
  9. Mongodb的update操作
  10. html5 服务器手机编程,html5实现服务器发送事件