18、springboot默认的配置文件及导入额外配置文件


springboot默认的配置文件及导入额外配置文件


Spring Boot默认加载的配置文件:


1、类加载路径(resources目录)application.properties|yml (相当于JAR包内)

 optional: classpath:/

2、类加载路径下的/config包(resources/config)。 (相当于JAR包内)

 optional: classpath:/config/

【备注】:上面类加载路径及载路径下config子目录,当应用被打包后,它们就被打包到了JAR包中。


3、当前路径。(相当于JAR包外)

     c:\abc\xyz> java -jar test.jar(Spring Boot应用)

 optional: file:./
     ——执行该java命令所在的目录(c:\abc\xyz)下的application.properties|yml

4、当前路径下的/config子目录。(相当于JAR包外)

 optional: file:./config/

5、当前路径下的/config子目录的任意直接子目录,也就是/config/abc/、/config/xyz/等,不能是/config/abc/def/。(相当于JAR包外),

实际上就是  optional:file:./config/*/ 

3个要点:

1、运行Spring Boot应用的当前目录下的配置文件会覆盖JAR包中原有的配置文件
——方便部署人员去添加自己的配置文件来覆盖Spring Boot应用中原有的配置。

2、无论是类加载路径中(JAR包),还是当前目录下(JAR包外),config子目录下配置文件总会被自动加载,而且优先级更高。

3、当前目录下,config的直接子目录下(config/abc、config/xyz)的配置文件的优先级是最高的。


设置Spring Boot默认加载的配置文件:

optional: 表示有就加载,没有就不管。

可通过如下系统属性(或环境变量、或命令行参数)来改变配置文件的位置:


spring.config.name:改变配置文件的文件名,默认值是application。

如果用OS环境变量来设置,则该属性对应于SPRING_CONFIG_NAME环境变量名。

它的默认值决定了Spring Boot要加载的配置文件的默认的文件名。


spring.config.location:改变配置文件的加载路径。

如果用OS环境变量来设置,则该属性对应于SPRING_CONFIG_LOCATION环境变量名。

其默认值是5个路径:

   optional: classpath:/
   optional: classpath:/config/
   optional: file:./
   optional: file:./config/
   optional: file:./config/*/ 

它的默认值决定了Spring Boot默认到哪些路径下搜索配置文件。


spring.config.additional-location:添加额外的加载路径,不会覆盖原有的配置文件的加载路径。

例如将spring.config.additional-location属性设置为“optional:classpath:/fkjava/,optional:file:./fkit/”,
此时Spring Boot将依次从如下路径加载配置文件:

(1)optional:classpath:/(类加载路径的根路径)
(2)optional:classpath:/config/(类加载路径下的/config包)
(3)optional:file:./(当前路径)
(4)optional:file:./config/(当前路径下的/config子目录)
(5)optional:file:./config/*/(当前路径下的/config子目录的任意直接子目录)
(6)optional:classpath:fkjava/
(7)optional:file:./fkit/

导入额外的配置文件介绍:


PropertiesFactoryBean | YamlPropertiesFactoryBean:将属性文件或YAML文件加载成Properties对象。

用法很简单:直接在容器中配置PropertiesFactoryBean | YamlPropertiesFactoryBean工厂Bean即可。


YamlMapFactoryBean:它将YAML文件加载成Map对象。

用法很简单:直接在容器中配置YamlMapFactoryBean工厂Bean即可。

上面两种方式只是将配置文件加载成容器中的Properties或Map Bean,并没有添加到配置环境中


PropertiesPropertySourceLoader | YamlPropertySourceLoader:将属性文件或YAML文件加载成PropertySource。

通常用于在配置环境后处理器中使用,接下来可将PropertySource添加到配置环境中。
——这种方式的加载时机非常早!

@PropertySource注解和@TestPropertySource注解只能读取属性文件(propertie文件)
告诉Spring Boot要去加载哪些额外的属性文件。

【注意】 @PropertySource注解去加载属性文件时,默认所使用的字符集是操作系统相关的。

如果你保存属性文件使用了UTF-8字符集,使用该注解时也需要通过encoding属性来指定对应的字符集。


spring.config.import 属性来指定要加载哪些额外的配置文件。



代码示例


演示spring.config.import属性来指定要加载哪些额外的配置文件

spring.config.import是在application.yml 配置文件中使用,项目启动的时候就会自动去加载这个application.yml配置文件,然后这个类才能通过@Value注解获取到对应的自定义配置文件中的属性值。
在这里插入图片描述


演示用@PropertySource注解来加载自定义的配置文件。

@PropertySource这个注解只能用来加载properties的文件。

这个注解是加载启动类上面的。

在这里插入图片描述


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_L_J_H_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值