-
加载顺序
- 这里是列表文本命令行参数
- SPRING_APPLICATION_JSON 参数
- 从java:comp/env 加载 JNDI 属性
- Java系统属性 (System.getProperties())
- 操作系统环境变量
- 如果有使用 random.* 属性配置,则使用 RandomValuePropertySource 产生
- 外部特定应用配置文件 例如:application-{profile}.properties 或者 YAML variants
- 内部特定应用配置文件 例如:application-{profile}.properties 或者 YAML variants
- 外部应用配置文件 例如:application.properties 或者 YAML variants
- 内部应用配置文件 例如:application.properties 或者 YAML variants
- 加载@Configuration类的 @PropertySource 或者 @ConfigurationProperties 指向的配置文件
- 默认配置,通过SpringApplication.setDefaultProperties 设置
-
加载 可以使用 @Value("${name}")的方式加载某个配置项
可以为每个 application.properties 指定一个 name属性,然后通过 java -jar app.jar --name="***" 来指定。
SPRING_APPLICATION_JSON 属性,提供了一种基于命令行的环境变量模式 SPRING_APPLICATION_JSON='{"foo":{"bar":"spam"}}' java -jar myapp.jar 同样的目的也可以通过 系统环境变量 java -Dspring.application.json='{"foo":"bar"}' -jar myapp.jar 命令行参数 java -jar myapp.jar --spring.application.json='{"foo":"bar"}'
- 配置随机值 主要用于安全,或者测试
my.secret=${random.value}
my.number=${random.int}
my.bignumber=${random.long}
my.number.less.than.ten=${random.int(10)}
my.number.in.range=${random.int[1024,65536]}
-
访问命令行属性 优先于其他配置,通过命令行 -- 添加任意配置项 如果不想使用命令行方式(出于安全),可以通过
SpringApplication.setAddCommandLineProperties(false)
关闭此方式。 -
应用配置文件 按顺序加载: 1. 当前目录下config目录 2. 当前目录 3. classpath 中 /config 包 4. classpath 根路径 如果不喜欢
application.properties
文件名,可以通过环境变量spring.config.name
来指定。如:
java -jar myproject.jar --spring.config.name=myproject
java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties
spring.config.location
默认就是 classpath:,classpath:/config,file:,file:config/
从左至右优先权依次递增,即,最后一个配置路径最先扫描
- 特定配置文件 当不指定时,则默认为 “default” 即:会默认加载 application-default.properties 通过 spring.profiles.active 配置加载指定的文件名