SpringBoot配置⽂件——加载顺序
⼀、存放⽬录
Application属性⽂件,按优先级排序,位置⾼的将覆盖位置
1. 当前项⽬⽬录下的⼀个/config⼦⽬录
spring怎么读取properties
2. 当前项⽬⽬录
3. 项⽬的resources即⼀个classpath下的/config包
4. 项⽬的resources即classpath根路径(root)
如图:
⽬录
⼆、读取顺序
如果在不同的⽬录中存在多个配置⽂件,它的读取顺序是:
1、config/application.properties(项⽬根⽬录中config⽬录下)
2、l
3、application.properties(项⽬根⽬录下)
4、l
5、resources/config/application.properties(项⽬resources⽬录中config⽬录下)
6、resources/l
7、resources/application.properties(项⽬的resources⽬录下)
8、l
顺序可以通过实验验证:
1~8 个位置分别定义不同的 server 端⼝号 9001~9008
即可验证结果顺序
注:
1、如果同⼀个⽬录下,有l也有application.properties,默认先读取application.properties。
2、如果同⼀个配置属性,在多个配置⽂件都配置了,默认使⽤第1个读取到的,后⾯读取的不覆盖前⾯读取到的。
3、创建SpringBoot项⽬时,⼀般的配置⽂件放置在项⽬的resources⽬录下,因为配置⽂件的修改,通过热部署不⽤重新启动项⽬,⽽热部署的作⽤范围是classpath下
三、配置⽂件的⽣效顺序,会对值进⾏覆盖
1. @TestPropertySource 注解
2. 命令⾏参数
3. Java系统属性(Properties())
4. 操作系统环境变量
5. 只有在random.*⾥包含的属性会产⽣⼀个RandomValuePropertySource
6. 在打包的jar外的应⽤程序配置⽂件(application.properties,包含YAML和profile变量)
7. 在打包的jar内的应⽤程序配置⽂件(application.properties,包含YAML和profile变量)
8. 在@Configuration类上的@PropertySource注解
9. 默认属性(使⽤SpringApplication.setDefaultProperties指定)
四、配置随机值
roncoo.secret={random.value} roncoo.number={random.int}
roncoo.bignumber={random.long} roncoo.number.={random.int(10)}
roncoo.number.in.range=${random.int[1024,65536]}
读取使⽤注解:@Value(value = "${roncoo.secret}")
注:出现黄点提⽰,是要提⽰配置元数据,可以不配置
五、属性占位符
当application.properties⾥的值被使⽤时,它们会被存在的Environment过滤,所以你能够引⽤先前定义的值(⽐如,系统属性)
=
roncoo.desc = ${roncoo.name} is a domain name
You can automatically expand properties from the Maven project by using resource filtering. If you use the spring-boot-starter-parent, you can then refer to your Maven ‘project properties’ with @..@ placeholders, as shown in the following example:
app.java.version=@java.version@
六、其他配置的介绍
端⼝配置
server.port=8090
时间格式化
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
时区设置
spring.jackson.time-zone=Asia/Chongqing

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。