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

作者:北方有鱼 时间:2022-06-19 13:36:29 

1、目录结构

Application属性文件,按优先级排序,位置高的将覆盖位置

  • 当前项目目录下的一个/config子目录

  • 当前项目目录

  • 项目的resources即一个classpath下的/config包

  • 项目的resources即classpath根路径(root)

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

二、读取顺序

如果在不同的目录中存在多个配置文件,它的读取顺序是:

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 = "${roncoo.secret}")

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

五、属性占位符

当application.properties里的值被使用时,它们会被存在的Environment过滤,所以你能够引用先前定义的值(比如,系统属性)
roncoo.name = www.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

来源:https://www.cnblogs.com/123-shen/p/13067361.html

标签:spring,boot,配置,文件,顺序
0
投稿

猜你喜欢

  • c#实现多线程局域网聊天系统

    2022-12-01 23:34:25
  • Java实现常见排序算法的优化

    2022-05-20 13:08:37
  • SpringBoot项目没有把依赖的jar包一起打包的问题解决

    2021-08-11 12:15:02
  • C#内置队列类Queue用法实例

    2023-07-18 14:12:05
  • 在java代码中获取JVM参数的方法

    2022-08-15 01:05:43
  • java实现简单学生成绩管理系统

    2023-08-15 18:38:57
  • Spring框架初始化解析

    2021-06-09 16:46:59
  • Android 在程序运行时申请权限的实例讲解

    2023-08-04 17:35:57
  • C#绘制时钟的方法

    2021-08-25 15:18:12
  • Java实战之基于swing的QQ邮件收发功能实现

    2023-11-15 01:34:26
  • 简单了解JavaBean作用及常用操作

    2023-09-08 19:59:29
  • android仿直播圆点加载效果

    2023-11-13 07:11:10
  • Spring缓存注解@Cacheable @CacheEvit @CachePut使用介绍

    2022-06-05 01:47:14
  • C#实现的图片、string相互转换类分享

    2022-04-17 04:50:34
  • 基于SpringBoot Mock单元测试详解

    2021-09-25 02:49:41
  • 快速了解Maven

    2022-10-22 20:18:33
  • C#中Lambda表达式的用法

    2022-07-29 17:29:56
  • java定义数组的三种类型总结

    2022-06-27 01:44:44
  • C#与PLC通讯的实现代码

    2021-10-29 13:34:39
  • Java 的 FileFilter文件过滤与readline读行操作实例代码

    2022-04-09 07:22:53
  • asp之家 软件编程 m.aspxhome.com