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

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

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

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

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

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

4. Java的系统属性, 能够经过System.getProperties()得到的内容。微服务

5 操做系统的环境变量 。测试

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

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微服务实践》(翟永超)

相关文章
相关标签/搜索