一、配置文件样式
在实际的项目开发中,一个项目通常会存在多个环境,例如,开发环境、测试环境和生产环境等。不同环境的配置也不尽相同,例如开发环境使用的是开发数据库,测试环境使用的是测试数据库,而生产环境使用的是线上的正式数据库。
Profile 为在不同环境下使用不同的配置提供了支持,我们可以通过激活、指定参数等方式快速切换环境。
二、多 Profile 文件方式
pring Boot 的配置文件共有两种形式:.properties 文件和 .yml 文件,不管哪种形式,它们都能通过文件名的命名形式区分出不同的环境的配置,文件命名格式为:
application-{profile}.properties/yml
其中,{profile} 一般为各个环境的名称或简称,例如 dev、test 和 prod 等等。
1案例:properties 配置
在 helloworld 的 src/main/resources 下添加 4 个配置文件:
- application.properties:主配置文件
- application-dev.properties:开发环境配置文件
- application-test.properties:测试环境配置文件
- application-prod.properties:生产环境配置文件
01配置application-dev.properties:开发环境配置文件
#开发环境
server.port= 8081 #表示监听的80端口,默认是8080
spring.datasource.driver-class-name=com.mysql.jdbc.Driver #数据库驱动
spring.datasource.url=jdbc:mysql://localhost:3306/ devDB?seUnicode=true
spring.datasource.username= rootdev
spring.datasource.password= rootdev
02配置application-test.properties:测试环境配置文件
#测试环境
server.port= 8082 #表示监听的80端口,默认是8080
spring.datasource.driver-class-name=com.mysql.jdbc.Driver #数据库驱动
spring.datasource.url=jdbc:mysql://localhost:3306/ testDB?seUnicode=true
spring.datasource.username= roottest
spring.datasource.password= roottest
03配置application-prod.properties:生产环境配置文件
#生产环境
server.port= 8083 #表示监听的80端口,默认是8080
spring.datasource.driver-class-name=com.mysql.jdbc.Driver #数据库驱动
spring.datasource.url=jdbc:mysql://localhost:3306/ prodDB?seUnicode=true
spring.datasource.username= rootprod
spring.datasource.password= root prod
04配置application.properties:主配置文件
在 application.properties 主配置文件中,指定默认服务器端口号为 8080,并通过以下配置激活开发或测试或生产环境的 profile。其中spring.profiles.active指定的值如:dev、test、prod就是多个环境配置文件名application-dev.properties、application-test.properties、application-prod.properties 中红色部分。
#主配置文件,进行激活#默认端口号,如果没有激活,则默认是8080,如果激活,则使用激活的文件端口
server.port=8080
#激活指定的profile
spring.profiles.active=prod
#激活指定的profile
#spring.profiles.active=test
#激活指定的profile
#spring.profiles.active=dev
2案例:yml配置
方式一(多配置文件,不推荐):
在 helloworld 的 src/main/resources 下添加 4 个配置文件:
- application.yml:主配置文件
- application-dev.yml:开发环境配置文件
- application-test.yml:测试环境配置文件
- application-prod.yml:生产环境配置文件
01配置application-dev.yml:开发环境配置文件
#开发环境server: port: 8081 spring: datasource: druid: driver-class-name: com.mysql.jdbc.Driver #数据库驱动 url: dbc:mysql://localhost:3306/devDB?seUnicode=true username: rootdev password: rootdev
02配置application-test.yml:测试环境配置文件
#测试环境server: port: 8082 spring: datasource: druid: driver-class-name: com.mysql.jdbc.Driver #数据库驱动 url: dbc:mysql://localhost:3306/testDB?seUnicode=true username: roottest password: roottest
03配置application-prod.yml:生产环境配置文件
#生产环境server: port: 8083 spring: datasource: druid: driver-class-name: com.mysql.jdbc.Driver #数据库驱动 url: dbc:mysql://localhost:3306/prodDB?seUnicode=true username: rootprod password: rootprod
04配置application.yml:主配置文件
在 application.yml主配置文件中,指定默认服务器端口号为 8080,并通过以下配置激活开发或测试或生产环境的 profile。其中spring.profiles.active指定的值如:dev、test、prod就是多个环境配置文件名application-dev.properties、application-test.properties、application-prod.properties 中红色部分。
#主配置文件,进行激活#默认端口号,如果没有激活,则默认是8080,如果激活,则使用激活的文件端口
server.port=8080
#激活开发环境
spring:
profiles:
active: dev #需要使用的配置文件的后缀
#激活测试环境
#spring:
# profiles:
# active: test #需要使用的配置文件的后缀
#激活生产环境
#spring:
# profiles:
# active: prod#需要使用的配置文件的后缀
方式二(单配置文件,推荐):
在 helloworld 的 src/main/resources 下添加 1 个主配置文件:
- application.properties:主配置文件
01配置application.yml:主配置文件
在配置多个环境,使用 “---” 进行分隔
#激活dev环境配置
spring:
profiles:
active: dev
# active: test
# active: prod
--- #使用此进行分割 # 开发环境配置 spring: config: activate: on-profile: dev datasource: url: jdbc:mysql://localhost:3306/devDB?useUnicode=true username: rootdev password: rootdev driver-class-name: com.mysql.jdbc.Driver server: port: 8081 --- # 测试环境配置 spring: config: activate: on-profile: test datasource: url: jdbc:mysql://localhost:3306/testDB?useUnicode=true username: roottest password: roottest driver-class-name: com.mysql.jdbc.Driver server: port: 8082 --- # 生产环境配置 spring: config: activate: on-profile: prod datasource: url: jdbc:mysql://localhost:3306/prodDB?useUnicode=true username: rootprod password: rootprod driver-class-name: com.mysql.jdbc.Driver server: port: 8083