多环境配置文件
一般项目会分为很多个环境,开发(本地)环境、测试环境、生产环境.
对应不同环境也会有不同的配置,最直白的就是数据库,不可能测试环境和生产环境用同一个数据库吧。当你只有一个yml配置文件的时候。项目每次部署的时候总不能每次都手动修改配置,所以可以配置多个环境的配置文件,需要哪个的时候勾选就好了。
pom文件配置
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<profiles>
<profile>
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>prod</id>
<properties>
<profiles.active>prod</profiles.active>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.1.4.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<finalName>${project.artifactId}</finalName>
</build>
我指定义了dev开发环境和prod生产环境,并且默认选择dev环境。顺便build中的配置也统一下一。
创建yml文件
分别创建application-dev.yml 和 application-prod.yml文件
dev和prod后缀就是你pom文件中定义的,你也可以定义一个stg,创建application-stg.yml。
application.yml添加配置
application.yml作为一个总的配置文件,不同环境的通用配置可以放到其中。
spring:
profiles:
active: "@profiles.active@"
找到idea右侧Maven选项,刷新一下,就可以看到配置好的选项。
默认选择dev环境的配置文件,可以手动选择任意环境。
我们分别在两个环境下的配置文件写一个配置,启动项目测试一下。
dev:
ceshi: dev
prod:
ceshi: prod
在controller中调用一下
@Value("${ceshi}")
private String ceshi;
@GetMapping(value = "/test")
@ApiOperation(value = "测试环境配置文件接口")
public String test(){
return ceshi;
}
启动项目,也可以在日志中看到,选择了dev环境配置
请求接口
切换到prod,再启动项目请求接口。
就此多环境配置就好了,如果遇到不生效的情况,请仔细检查pom文件是否配置正确,或者Reload maven一下。