当前位置:   article > 正文

18、springboot默认的配置文件及导入额外配置文件_spring.config.import

spring.config.import

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)的配置文件的优先级是最高的。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

★ 设置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/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

★ 导入额外的配置文件:

- 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属性来指定要加载哪些额外的配置文件。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

代码示例

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

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

演示用@PropertySource注解来加载自定义的配置文件。这个注解只能用来加载properties的文件。

这个注解是加载启动类上面的。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/157248?site
推荐阅读
相关标签
  

闽ICP备14008679号