实际开发中,一般都有三套环境,开发环境、测试环境、生产环境,三套环境的配置文件内容也有所不同,比如端口,数据库连接、Redis 连接等。如果在打包的时候频繁修改配置文件容易出错。

properties 多环境配置

多环境配置文件

Spring Boot 提供了多环境配置,根据不同的环境使用不同的配置文件。多环境配置文件名需要满足 application-{profile}.properties 的格式,其中 {profile} 对应环境标识。例如:

  • application-dev.properties:对应开发环境配置
  • application-test.properties:对应测试环境配置
  • application-pro.properties:对应生产环境配置

配置生效选项

对于那个配置文件会生效,需要在 application.properties 中通过 spring.profiles.active 属性来设置,其值对应 {profile} 值,例如:

加载开发环境配置

  1. spring.profiles.active=dev

yml 多环境配置

多环境配置文件

yml 配置文件也可以和 properties 配置文件一样,根据不同的环境配置不同的配置文件。例如:

  • application-dev.yml:对应开发环境配置
  • application-test.yml:对应测试环境配置
  • application-pro.yml:对应生产环境配置

配置生效选项

对于那个配置文件会生效,需要在 application.yml 中通过 spring.profiles.active 属性来设置,其值对应 {profile} 值,例如:

加载开发环境配置

  1. spring:
  2. profiles:
  3. active: dev

一个 yml 文件配置多环境

yml 配置文件除了上面的配置方式,还可以在同一个配置文件中通过添加三个英文状态下的短横线来区分多个环境的配置内容,例如:

  1. spring:
  2. profiles:
  3. active: dev
  4. ---
  5. spring:
  6. profiles: dev
  7. server:
  8. port: 9090
  9. ---
  10. spring:
  11. profiles: test
  12. server:
  13. port: 9091
  14. ---
  15. spring:
  16. profiles: pro
  17. server:
  18. port: 9092

两种配置方式的比较

  1. Properties 配置多环境,需要添加多个配置文件,yml 只需要一个配件文件;
  2. 书写格式的差异,yml 相对比较简洁,优雅;
  3. yml 的缺点:不能通过 @PropertySource 注解加载,如果需要使用 @PropertySource 注解的方式加载值,那就要使用 properties 文件;