SpringBoot配置加载顺序

通常咱们会将SpringBoot应用须要的配置内容放在项目工程中,而后经过spring.profiles.active或是经过Maven来实现多环境的支持.可是,当团队逐渐壮大,分工愈来愈细以后,每每不须要让开发人员知道测试或生产环境的细节,而是但愿由每一个环境各自的负责人(QA或运维)来集中维护这些信息,那么若是仍是以则海洋的方式存储配置内容,对于不一样环境配置的修改就不得不去获取工程内容来修改这些配置内容,当应用很是多的时候就变得很是不方便.同时,配置内容对开发人员均可见,这自己也是一种安全隐患.对此,出现了不少将配置内容外部化的框架和工具,Spring Cloud Config就是其中之一.为了可以更合理的重写各个属性的值,SpringBoot使用下面的顺序来加载配置:java

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定义的内容;

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

能够看到,第7项到第9项都是从应用jar包以外读取配置文件,因此,实现外部化配置的原理就是今后切入,为其指定外部配置文件的加载位置来取代jar包以内的配置内容。经过这样的实现,咱们的工程在配置中就变得很是干净,只需在本地放置开发须要的配置便可,而不须要其余环境的配置,由其对应环境的负责人去维护便可。安全

相关文章
相关标签/搜索