- 前言
- 配置文件的优先级
- 引用外部的配置文件
- 配置多环境的配置文件
- 在配置文件中配置多环境
- 在代码中配置多环境
- 在项目启动时配置多环境
在我们的 springboot 项目中,通常会有一个 application.yml 或 application.properties 的文件,这是整个 springboot 项目的核心配置文件,通常文件中包含着端口、程序名、数据源等重要信息的配置
配置文件的优先级springboot 项目中的 application.yml 或 application.properties 配置文件一共可以出现在如下 4 个位置
- 项目根目录下的 config 文件夹中
- 项目根目录下
- classpath 下的 config 文件夹中
- classpath 下
这四个位置的加载优先级依次为 1 > 2 > 3 > 4,如果这 4 个位置中都有 application.yml 或 application.properties 文件,那么加载的优先级从 1 到 4 依次降低。springboot 将按照这个优先级查找配置信息,并加载到 spring 环境中
引用外部的配置文件默认情况下 springboot 查找 application.yml 或 application.properties 并加载。如果开发者不想使用其作为配置文件名,也可以自己定义。在打包启动时指定文件的路径或名称
- 项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定文件名
java -jar xxx.jar --spring.config.name=filename
- 项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定外部配置文件的位置
java -jar xxx.jar --spring.config.location=classpath:/app.properties
- 当然我们也可以指定外部配置所在的文件夹,启动时会搜索并使用该文件夹下的配置文件
java -jar xxx.jar --spring.config.location=classpath:/config/
- 我们还可以同时配置多个路径,比如下面样例先加载外部配置文件,如果不存在外部配置文件的话则使用包内默认的配置文件
java -jar xxx.jar --spring.config.location=classpath:/,classpath:/config/配置多环境的配置文件
开发者在项目发布之前,一般需要频繁地在开发环境、测试环境以及生产环境之间进行切换,这个时候大量的配置需要频繁更改(如:数据库、redis、mongodb,MQ 等配置)。频繁修改带来了巨大的工作量,springboot 中约定的不同环境下配置文件名称规则为
# profile:占位符表示当前环境的名称
application-{profile}.properties
在配置文件中配置多环境
在 application.properties 中进行如下配置,则表示加载 application-dev.properties 文件
spring.profiles.active=dev
在 application.properties 中进行如下配置,则表示加载 application-prod.properties 文件
spring.profiles.active=prod在代码中配置多环境
在启动类的 main 方法上添加如下代码
@SpringBootApplication
public class Springdemo3Application {
public static void main(String[] args) {
SpringApplicationBuilder builder = new SpringApplicationBuilder(Springdemo3Application.class);
builder.application().setAdditionalProfiles("dev");
builder.run(args);
}
}
在项目启动时配置多环境
我们也可以在项目打包成 jar 包后启动时,在命令行中动态指定当前环境
java -jar xxx.jar --spring.profiles.active=dev



