落花踏尽游何处,笑入胡姬酒肆中。这篇文章主要讲述SpringBoot配置文件——加载顺序相关的知识,希望能为你提供帮助。
一、存放目录
Application属性文件,按优先级排序,位置高的将覆盖位置
- 当前项目目录下的一个/config子目录
- 当前项目目录
- 项目的resources即一个classpath下的/config包
- 项目的resources即classpath根路径(root)
如图:
文章图片
目录
如果在不同的目录中存在多个配置文件,它的读取顺序是:
1、config/application.properties(项目根目录中config目录下)
2、config/application.yml
3、application.properties(项目根目录下)
4、application.yml
5、resources/config/application.properties(项目resources目录中config目录下)
6、resources/config/application.yml
7、resources/application.properties(项目的resources目录下)
8、resources/application.yml
顺序可以通过实验验证:1~8 个位置 分别定义不同的 server 端口号 9001~9008
即可验证结果顺序
注:
1、如果同一个目录下,有application.yml也有application.properties,默认先读取application.properties。
2、如果同一个配置属性,在多个配置文件都配置了,默认使用第1个读取到的,后面读取的不覆盖前面读取到的。
3、创建SpringBoot项目时,一般的配置文件放置在项目的resources目录下,因为配置文件的修改,通过热部署不用重新启动项目,而热部署的作用范围是classpath下
三、配置文件的生效顺序,会对值进行覆盖
- @TestPropertySource 注解
- 命令行参数
- java系统属性(System.getProperties())
- 操作系统环境变量
- 只有在random.*里包含的属性会产生一个RandomValuePropertySource
- 在打包的jar外的应用程序配置文件(application.properties,包含YAML和profile变量)
- 在打包的jar内的应用程序配置文件(application.properties,包含YAML和profile变量)
- 在@Configuration类上的@PropertySource注解
- 默认属性(使用SpringApplication.setDefaultProperties指定)
roncoo.secret=random.value roncoo.number=random.int
roncoo.bignumber=random.long roncoo.number.less.than.ten=random.int(10)
roncoo.number.in.range=$random.int[1024,65536]
读取使用注解:@Value(value = "https://www.songbingjia.com/android/$roncoo.secret")
注:出现黄点提示,是要提示配置元数据,可以不配置
五、属性占位符
当application.properties里的值被使用时,它们会被存在的Environment过滤,所以你能够引用先前定义的值(比如,系统属性)
??roncoo.name?? = ??www.roncoo.com??
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.encoding=@project.build.sourceEncoding@
app.java.version=@java.version@
六、其他配置的介绍
- 端口配置
server.port=8090 - 时间格式化
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss - 时区设置
spring.jackson.time-zone=Asia/Chongqing
,作者:??三号小玩家???,?
【SpringBoot配置文件——加载顺序】
推荐阅读
- Modbus协议详解#yyds干货盘点#
- #yyds干货盘点# 盘点两种使用Python读取.nc文件的方法
- #yyds干货盘点# 单链表实现栈
- SpringBoot的文件上传功能与下载方式
- Windows 下搭建ActiveMQ环境#yyds干货盘点#
- #yyds干货盘点# 彻底理解对象内存分配及Minor GC和Full GC全过程
- SpringBoot 获取上下文,获取bean的几种中方式
- #yyds干货盘点# springcloud整合Sentinel使用Nacos存储规则
- #yyds干货盘点#Spring Data JPA入门使用