SpringBoot配置文件可以使用yml格式和properties格式。分别的默认命名为:application.yml、application.properties
存放目录
SpringBoot配置文件默认可以放到以下目录中,可以自动读取到:
- 项目根目录下
- 项目根目录中config目录下
- 项目的resources目录下
- 项目resources目录中config目录下
读取顺序
如果在不同的目录中存在多个配置文件,它的读取顺序是:
- config/application.properties(项目根目录中config目录下)
- config/application.yml
- application.properties(项目根目录下)
- application.yml
- resources/config/application.properties(项目resources目录中config目录下)
- resources/config/application.yml
- resources/application.properties(项目的resources目录下)
- resources/application.yml
注:
- 如果同一个目录下,有application.yml也有application.properties,默认先读取application.properties。
- 如果同一个配置属性,在多个配置文件都配置了,默认使用第1个读取到的,后面读取的不覆盖前面读取到的。
- 创建SpringBoot项目时,一般的配置文件放置在“项目的resources目录下
我们在SpringBoot项目中在resources下建一个 Config 文件夹
application.properties
spring.profiles.active=dev
这种方式很便于开发。默认启用的是 application.yml ,当你需要多环境开发要在 application.yml 中设置启用的 .yml文件。
配置文件
##profile
spring:
profiles:
active: dev
active: dev 是启用以 -dev结尾的 .yml 文件。文件格式如上图。
IDEA配置
运行参数
java -jar dist.jar --spring.profiles.active=dev
指定使用dev文件中的配置
自定义配置文件位置
有时候,我们需要将配置文件放置在项目外部,可以通过设置spring.config.name
和spring.config.location
参数来指定配置文件的位置和名称。
例如,假设我们的配置文件名为myconfig.yml
,并放置在/home/user/config/
目录下,可以通过以下方式来加载该文件:
java -jar myapp.jar --spring.config.name=myconfig --spring.config.location=/home/user/config/
以上命令会优先加载/home/user/config/myconfig.yml
文件。
获取classpath下的文件
例如:项目resource下存在文件a.txt
import org.springframework.util.ResourceUtils;
//使用:
File file = ResourceUtils.getFile("classpath:a.txt");
获取spring.profiles.active方式
package com.test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Service
public class SpringProfileService {
private static final Logger logger = LoggerFactory.getLogger(SpringProfileService.class);
private static final String PRODUCTION_PROFILE = "production";
private static final String STAGE_PROFILE = "stage";
@Value("${spring.profiles.active}")
private String active;
}