概述

我们在做项目开发的时候,生产环境和测试环境的一些配置可能会不、样,有时候一些功能也可能会不一样,所以我们可能会在上线的时候手工修改这些配置信息。Spring为我们提供了Spring Boot profile这个功能(Maven也为我们提供了Maven Profile)。我们只需要在启动的时候添加一个虚拟机参数,激活自己环境所要用的 Profile就可以了。

操作起来很简单,只需要为不同的环境编写专门的配置文件,如: app1ication-dev.yml、app1ication-prod .yml,启动项目时只需要增加一个命令参数—spring.profiles.active= 环境配置即可
java -jar 1.0.0-SNAPSHOT.jar --pring.profiles.active=prod

什么是 Nacos Config Profile

spring-cloud-starter-alibaba-nacos-config 在加载配置的时候,不仅仅加载了以 dataid 为 ${spring.application.name}.${file-extension:properties} 为前缀的基础配置,还加载了 dataid 为 ${spring.application.name}-${profile}.${file-extension:properties} 的基础配置。在日常开发中如果遇到多套环境下的不同配置,可以通过 Spring 提供的 ${spring.profiles.active} 这个配置项来配置。

使用 Nacos Config Profile

我们以service-provider项目为例,演示多环境配置效果,不要忘记依赖 Nacos Config Starter
下面是spring boot 2.7版本的依赖,老版本的 groupid是 org.springframework.cloud

  1. <dependency>
  2. <groupId>com.alibaba.cloud</groupId>
  3. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.springframework.cloud</groupId>
  7. <artifactId>spring-cloud-starter-bootstrap</artifactId>
  8. </dependency>

使用控制台发布配置

通过浏览器访问:http://192.168.3.192:8848/nacos ,访问 Nacos server

  • 发布一个名为 nacos-provider-config.yaml的测试环境配置

image.png

spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.3.192:8848

server:
  port: 8081

management:
  # 端点检查(健康检查)
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always
  • 发布一个名为:nacos-provider-config-prod.yaml的生产环境配置
  • image.png
spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.3.192:8848

server:
  port: 8082

management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always

修改配置文件

hello-spring-cloud-alibaba-nacos-provider添加两个配置文件
bootstrap.properties 和 bootstrap-prod.properties

spring.cloud.nacos.config.name=nacos-provider-config
spring.cloud.nacos.config.server-addr=192.168.3.192:8848
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.name=nacos-provider-config-prod
spring.cloud.nacos.config.server-addr=192.168.3.192:8848
spring.cloud.nacos.config.file-extension=yaml

测试多环境配置

image.png
启动后可以看到 8081 和 8082 都启动了。
image.png
image.png