配置文件命名方式是:application-环境.yml
,springboot提供如下的配置,让我们可以指定使用哪个配置文件:
spring:
profiles:
active: @env@
在pom.xml
中加入如下配置:
<!--配置不同的profile,对应不同的生产环境。-->
<profiles>
<profile>
<!--开发-->
<id>dev</id>
<activation>
<!--默认开发环境-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!--自定义的变量名称env作为标签,标签内是我们配置文件不同环境的后缀。-->
<env>dev</env>
</properties>
</profile>
<profile>
<!--生产-->
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
<profile>
<!--测试-->
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
</profiles>
Maven打包插件:
<build>
<plugins>
<plugin>
<!--springboot使用maven打包的插件-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<!--指定配置文件的位置-->
<directory>src/main/resources</directory>
<includes>
<!--读取resources下的所有文件,include表示指定文件内的,相对的还有excludes ,排除其下的文件。-->
<include>**/*</include>
</includes>
<!--开启替换标签,比如我们的'@env'就是通过这个替换的。-->
<filtering>true</filtering>
</resource>
</resources>
</build>
不同环境下的配置示例:application-dev.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai #url
username: root
password: abc123
driver-class-name: com.mysql.cj.jdbc.Driver
config:
activate:
on-profile: dev
application-prod.yml
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: abc123
driver-class-name: com.mysql.cj.jdbc.Driver
config:
activate:
on-profile: prod
按照如上配置,在IDEA右侧的Maven配置文件中可以勾选启动环境。