关于SpringBoot的配置文件

1 配置的读取顺序

1.1 application配置文件的读取顺序

读取顺序由内而外: (1) - (2) - (3) - (4),后读取到会覆盖先读取到,所以优先级正好反过来: (4) - (3) - (2) - (1)

/opt
	my-spring-boot-project.jar
    	application.yml          (1)
    	/config
        	application.yml      (2)
	application.yml              (3)
	/config
 		application.yml          (4)

说明:(1)和(2)通常放在/src/resource目录下面,打包的时候会自动拷贝到jar包的根目录下面

1.2 application-{profile}配置的读取顺序

通过设置spring.profiles.active=xxx的方式来指定环境时,是所有的application配置读取完后再读取application-{profile}.yml,所以application-{profile}的优先级整体高于application.yml

另外可以利用yaml的---的文档块方式来区分不同的profile

spring:
   profiles:
     dev
 server:
   port: 8081
---
spring:
   profiles:
     prod
 server:
   port: 80

1.3 配置的整体读取顺序

注意:读取顺序越后,会覆盖之前读区到的值,优先级也就更高

读取顺序 读取位置
1 jar包内部/application.yml
2 jar包内部/config/application.yml
3 jar包外部/application.yml
4 jar包外部/config/application.yml
5 jar包内部/application-profile.yml
6 jar包内部/config/application-profile.yml
7 jar包外部/application-profile.yml (可通过spring.config.location指定其他路径)
8 jar包外部/config/application-profile.yml (可通过spring.config.location指定其他路径)
9 系统环境变量
10 用户环境变量
11 JVM环境变量 (java -Dkey=value)
12 程序执行参数 (java -jar --key=value)

2 其他配置文件的导入

2.1 通过spring.profiles.include导入

application-mysql.yml
application-redis.yml
application.yml

spring:
  profiles:
    include: mysql,redis

2.2 通过spring.config.import导入(推荐)

mysql.yml
redis.yml
application.yml

spring:
  config:
    import: 
      - classpath:mysql.yml
      - classpath:redis.yml

推荐的理由是虽然只是通过classpath指定了文件的路径,但是在这个基础上还可以通过spring.profiles.active=xxx来自动加载对应环境的配置:
mysql.yml
mysql-dev.yml
redis.yml
redis-dev.yml
application.yml

spring:
  config:
    import: 
      - classpath:mysql.yml
      - classpath:redis.yml

当指定spring.profiles.active=dev时,mysql-dev.yml和redis-dev.yml的内容会自动读入,并且覆盖mysql.yml和redis.yml的值。

3 配置随机值

# 随机整数
number-int:
  ${random.int}
  
# 小于100
number-100:
  ${random.int(100)}
  
# 大于等于1, 小于10
number-1-10:
  ${random.int[1,10]}
  
# 随机长整数
number-long:
  ${random.long}
  
# 小于10000000
number-long-10000000:
  ${random.long(10000000)}
  
# 大于等于10000000, 小于90000000
number-long-10000000-90000000:
  ${random.long[10000000,90000000]}

# 随机UUID
random-uuid:
  ${random.uuid}

# 随机md5
random-md5:
  ${random.value}. #.后面为任意字符或者不填

4 读取配置

相关推荐

  1. 关于SpringBoot配置文件

    2024-04-09 05:00:02       13 阅读
  2. 关于Spring Boot配置文件

    2024-04-09 05:00:02       24 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-09 05:00:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-09 05:00:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-09 05:00:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-09 05:00:02       18 阅读

热门阅读

  1. MySQL-commit,rollback

    2024-04-09 05:00:02       13 阅读
  2. 探索 C++ 中的 string 类

    2024-04-09 05:00:02       10 阅读
  3. Inotify

    Inotify

    2024-04-09 05:00:02      11 阅读
  4. PCL 三角形到三角形的距离

    2024-04-09 05:00:02       11 阅读
  5. 计算机病毒传播原理

    2024-04-09 05:00:02       15 阅读
  6. VPS入门指南:理解并有效利用虚拟专用服务器

    2024-04-09 05:00:02       12 阅读
  7. 力扣由浅至深 每日一题.23 Nim 游戏

    2024-04-09 05:00:02       11 阅读
  8. 测试细节的测试工程师

    2024-04-09 05:00:02       11 阅读
  9. 05_Linux的文件压缩

    2024-04-09 05:00:02       12 阅读