SpringBoot配置文件可以使用yml格式和properties格式。分别的默认命名为:application.yml、application.properties

存放目录

SpringBoot配置文件默认可以放到以下目录中,可以自动读取到:

  • 项目根目录下
  • 项目根目录中config目录下
  • 项目的resources目录下
  • 项目resources目录中config目录下

 102552_z5cu_2273688.png

读取顺序

     如果在不同的目录中存在多个配置文件,它的读取顺序是:     

  • 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.namespring.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;
}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐