关于SpringBoot的配置文件

本文详细解释了SpringBoot中配置文件的读取顺序,包括application.yml、application-profile.yml和不同环境配置的加载规则,以及如何通过`spring.profiles.include`和`spring.config.import`导入其他配置文件。还介绍了如何在配置中使用随机值功能,如整数、长整数、UUID和MD5。
摘要由CSDN通过智能技术生成

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

  • application.yml
  • application-dev.yml

以上的配置文件当指定spring.profiles.active=dev时,application-dev.yml的内容会覆盖application.yml。

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

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

以上的配置文件当指定spring.profiles.active=prod时,server.port则将80生效。

1.3 配置的整体读取顺序

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

读取顺序读取位置
1jar包内部/application.yml
2jar包内部/config/application.yml
3jar包外部/application.yml
4jar包外部/config/application.yml
5jar包内部/application-profile.yml
6jar包内部/config/application-profile.yml
7jar包外部/application-profile.yml (可通过spring.config.location指定其他路径)
8jar包外部/config/application-profile.yml (可通过spring.config.location指定其他路径)
9系统环境变量
10用户环境变量
11JVM环境变量 (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

以上的配置文件当指定spring.profiles.active=dev时,application-dev.yml的内容会覆盖application.yml、application-mysql.yml、application-redis.yml。

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.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 读取配置

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值