springboot配置
访问命令行属性
默认情况下,SpringApplication将任何命令行选项参数(即以–开头的参数,例如–server.port=9000)转换为property并将它们添加到 Spring Environment。如前所述,命令行属性始终优先于基于文件的属性源。
如果不想将命令行属性添加到Environment,则可以使用SpringApplication.setAddCommandLineProperties(false)禁用。
java -jar demo.jar –server.port=8080
配置文件
当应用程序启动时, SpringBoot 将自动从以下位置查找并加载文件application.properties,application.yaml
- 类路径
- 类路径/config目录
- jar包所在目录
- jar包所在目录/config目录下
- jar包所在目录/config目录下的子目录(如果子目录有多个,按照unicode编码排序)
该列表按优先级排序(优先级较低的项目的值将覆盖优先级较高的项目)。加载文件中的属性将添加到Environment。
参考ConfigDataEnvironment#DEFAULT_SEARCH_LOCATIONS
- spring.config.name 默认为application。即默认加载application.properties,application.yml
- spring.config.location默认为以上5个路径,只能是目录,所以都以/结尾
- spring.config.additional-location和spring.config.location差不多,location是默认的配置文件路径,如果想加载其他配置文件路径则使用这个,但是他会覆盖location中的属性
使用yml配置文件
1 |
|
占位符
1 |
|
随机数
1 |
|
激活属性
可以使用spring.profiles.active属性来指定哪些配置文件处于活动状态。
即加载 {spring.application.name}-{spring.profiles.active}.properties,{spring.application.name}-{spring.profiles.active}.yml
1 |
|
添加活动配置文件
有时需要将属性添加到活动配置文件而不是替换它们,例如开发环境和测试环境使用的是相同的数据库,即使spring.profiles.active没有激活,公共文件也会激活。即加载{spring.application.name}-{spring.profiles.include}.properties,{spring.application.name}-{spring.profiles.include}.yml
1 |
|
获取属性
JavaBean属性绑定
1 |
|
使用@ConfigurationProperties与属性绑定
1 |
|
使用@EnableConfigurationProperties启用@ConfigurationProperties。
也可以直接在@ConfigurationProperties上添加@Component等注解直接生效。
1 |
|
@Value
// 无默认值
@Value("${app.name}")
private String name;
// 有默认值,如果配置文件中没有属性则默认使用
@Value("${app.name:'hello'}")
private String name;