38.SpringBoot外部化配置及其配置优先级
Spring Boot允许您外部化配置,以便您可以使用同一个应用程序代码在不同的环境中。 您可以使用属性文件,YAML文件,环境变量和
外部化配置的命令行参数。 属性值可以直接注入您的bean使用@Value注释,通过Spring的Environment抽象访问或绑定到
通过@ConfigurationProperties结构化对象。Spring Boot使用一个非常特殊的PropertySource命令,旨在允许合理的覆盖
价值观 按以下顺序考虑属性:
优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会
形成互补配置
1.命令行参数
所有的配置都可以在命令行上进行指定
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc
多个配置用空格分开; --配置项=值
2.来自java:comp/env的JNDI属性
3.Java系统属性(System.getProperties())
4.操作系统环境变量
5.RandomValuePropertySource配置的random.*属性值
由jar包外向jar包内进行寻找;
优先加载带profile
6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件[和jar包在同一文件夹下]
7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
再来加载不带profile
8.jar包外部的application.properties或application.yml(不带spring.profile)配置文件[和jar包在同一文件夹下]
9.jar包内部的application.properties或application.yml(不带spring.profile)配置文件
10.@Configuration注解类上的@PropertySource
11.通过SpringApplication.setDefaultProperties指定的默认属性
所有支持的配置加载来源
命令行配置属性
默认情况下,SpringApplication将转换任何命令行选项参数(以' --'开头,例如 --server.port = 9000)到属性并将其添加到Spring Environment.
微信公众号