一、默认的配置文件
1、介绍
SpringBoot项目默认的配置文件有两种:bootstrap、application,支持的文件类型有两种:properties和yml。所以默认的配置文件有四个:bootstrap.properties,application.properties、bootstrap.yml,application.yml,常用的是application.properties。均位于src/main/resources/下。
2、默认配置文件优先级
上面的4个配置文件,通常情况下只选择一个即可,如果配置了多个,其加载的顺序为:
bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml
从高到低。
3、默认配置文件区别
(1)加载顺序区别:bootstrap配置文件是比application配置文件优先加载。因为bootstrap是由spring父上下文加载,而application是由子上下文加载。
(2)优先级区别:bootstrap加载的配置信息是不能被application的相同配置覆盖的,如果两个配置文件同时存在,以bootstrap为主。
4、bootstrap常见应用场景:
1)配置一些固定的,不能被覆盖的属性,用于一些系统级别的参数配置。本地的配置文件是默认不能覆盖远程的配置的
2)一些需要加密/解密的场景
3)当你使用了Spring Cloud Config配置中心时,这时需要在boostrap配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息。
加载依赖,系统才会读取bootstrap配置文件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
5、application常见应用场景:
在大部分情况下不用区分这两种情况使用application即可,后面的配置文件不做声明均指application.properties。
1)常用于SpringBoot项目的自动化配置
2)用于一些应用级别的参数配置
6、bootstrap使用
bootstrap是spring cloud带来的附加品,SpringBoot项目只会识别application.* 配置文件,并不会自动识别bootstrap.yml。bootstrap.yml配置是SpringCloud项目才会用到的,所以需要有cloud相关的一些配置才能够去正常读取它,否则只会去读取application.yml。为了能从bootstrap.yml中读取配置:
(1)如果springboot低于2.4.0版本的话,需要在启动类对应的pom里添加依赖
<!-- spring cloud,基于spring cloud才会读取bootstrap.yml -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
</dependency>
(2) 如果springboot高于2.4.0版本的话,则在启动类对应的pom里添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
二、springboot启动时加载(内部)自定义配置文件
有以下几种方法:
1、加载java类配置文件:类头 加@Configuration注解。
2、加载src/main/resources下自定义的配置文件:使用ImportResource引入。
三、springboot启动加载外部配置文件
无论怎么配置,spring-boot都会读取加载默认的配置文件,所以可以在默认的
application.properties中通过如下 2 个参数,指定外部配置文件的路径:
spring.config.location
spring.config.additional-location
1、spring.config.location:
1.1、用法:
(1)代码指定:可以先将 Spring Boot 项目打包成 JAR 文件,然后在命令行启动命令中,使用命令行参数 --spring.config.location,指定外部配置文件的路径。
java -jar {JAR} --spring.config.location={外部配置文件全路径}
(2)启动命令指定:
java -jar springbootdemo-0.0.1-SNAPSHOT.jar --spring.config.location=D:\myConfig\my-application.yml
1.2、需要注意的是:
使用该参数指定配置文件后,会使项目默认配置文件(application.properties 或 application.yml )失效,Spring Boot 将只加载指定的外部配置文件。
2、spring.config.additional-location:
用法:启动命令指定:
java -jar {JAR} --spring.config.additional-location={外部配置文件全路径}