当前位置: 代码迷 >> 综合 >> SpringBoot:配置文件的加载
  详细解决方案

SpringBoot:配置文件的加载

热度:84   发布时间:2023-09-18 15:43:18.0

1.配置文件处理器引入

SpringBoot配置文件首先必须要引入配置文件处理器,才能在实体类注入的时候自动加载配置文件。

<!--        引入配置文件处理器,配置文件进行绑定就会提示--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency></dependencies>

2.内部配置文件

SpringBoot启动会扫描以下位置的application.properties/yml文件作为SpringBoot默认的全局配置文件。

- file:./config/

- file:./

- classpath:/config

- classpath:/

classpath是java和resources下,file:./是指src下的,优先级从上到下,若有重复名称的配置文件,则优先级高的配置内容覆盖优先级低的配置内容。所以会有所谓的“互补配置”。


3.外部配置文件

2.1 server.config.location

可以通过server.config.location参数来更改配置文件的位置,在项目打包好以后,使用命令行参数的形式,启动项目的时候指定配置文件的新位置;指定的配置文件和默认的配置文件将共同起作用形成互补配置。

这个方法经常在运维的时候使用,当我们项目已经打包,但是又需要更改新的配置的时候,我们可以在服务器的指定位置编写好新的配置文件,在启动项目的时候设置新的配置文件的路径,这样可以实现快速修改配置的目的。

语法:--spring.config.location=Path(放在jar包启动命令的后面)  --server.servlet.port=8081(直接指定多个参数也可以空格隔开即可)

当jar包和配置文件放在同一目录下时,启动炸包不需要指定配置文件,会直接加载同一目录下的配置文件,优先覆盖项目内配置文件的参数。

优先级顺序是:

优先加载项目外和项目内部的带profile名的配置文件

加载项目外和项目类的不带profile名的配置文件

2.2 @Configuration注解类上的@PropertySource

ioc类都可以进行@PropertySource的指定配置,但是要注意区分,实体类引用配置文件必须有@ConfigurationProperties(prefix='')来指定前缀,它的功能是用于数据注入,而我们的Configuration注解类是为了添加必要的键值对。放在主运行类所在目录下,它会扫描之,加入配置序列。

2.3 SpringApplication.setDefaultProperties

指定默认属性