在我们的 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