简单了解springboot加载配置文件顺序

网友投稿 317 2022-12-05


简单了解springboot加载配置文件顺序

1、目录结构

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、resohttp://urces/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.tenhttp://={random.int(10)}

roncoo.number.in.range=${random.int[1024,65536]}

读取使用注解:@Value(value = "${roncoo.secret}")

注:出现黄点提示,是要提示配置元数据,可以不配置

五、属性占位符

当application.properties里的值被使用时,它们会被存在的Environment过滤,所以你能够引用先前定义的值(比如,系统属性)

roncoo.name = roncoo.com

roncoo.desc = ${roncoo.name} is a domain name

六、其他配置的介绍

端口配置

server.port=8090

时间格式化

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

时区设置

spring.jackson.time-zone=Asia/Chongqing


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring Boot2.3 新特性分层JAR的使用
下一篇:SpringMVC form标签引入及使用方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~