SpringBoot配置加载顺序

栏目: Java · 发布时间: 5年前

一般我们会将SpringBoot应用需要的配置内容放在项目工程中,然后通过spring.profiles.active或是通过Maven来实现多环境的支持。但是,当团队逐渐壮大,分工越来越细之后,往往不需要让开发人员知道测试或生产环境的细节,而是希望由每个环境各自的负责人(QA或运维)来集中维护这些信息,那么如果还是以则海洋的方式存储配置内容,对于不同环境配置的修改就不得不去获取工程内容来修改这些配置内容,当应用非常多的时候就变得非常不方便。同时,配置内容对开发人员都可见,这本身也是一种安全隐患。对此,出现了很多将配置内容外部化的框架和工具,Spring Cloud Config就是其中之一。为了能够更合理的重写各个属性的值,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}环境的配置文件内容,例如 applicaiton-{profile}.properties 或是 yaml 定义的配置文件;

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

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

10.位于当前应用jar包之内的 application.properties 和yaml配置内容;

11.在@Configration注解修改的类中,通过@PropertySource注解定义的属性;

12.应用默认属性,使用SpringApplication.setDefaultProperties定义的内容;

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

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

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2019-06/158899.htm


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

最愚蠢的一代

最愚蠢的一代

马克·鲍尔莱因 / 杨蕾 / 天津社会科学院出版社 / 2011-7 / 39.80元

《最愚蠢的一代》 美国大学教授的鲍尔莱恩认为,数码时代正在使美国的年轻一代成为知识最贫乏的一代人。 美国的青少年和年轻人正在被数码时代各种娱乐消遣性的工具所淹没。这些工具包括手机、社交网络和信息传送等等。他们通过这些工具传达的却是幼稚浮浅的东西,而且这些东西正在妨碍他们同历史、公民义务、国际事务和美术等成年人的现实世界进行重要的接触。 我们想当然地以为,这些善于吸收新技术的美国年......一起来看看 《最愚蠢的一代》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

html转js在线工具
html转js在线工具

html转js在线工具