概述
我们在做项目开发的时候,生产环境和测试环境的一些配置可能会不、样,有时候一些功能也可能会不一样,所以我们可能会在上线的时候手工修改这些配置信息。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
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
使用控制台发布配置
通过浏览器访问:http://192.168.3.192:8848/nacos ,访问 Nacos server
- 发布一个名为
nacos-provider-config.yaml
的测试环境配置
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
的生产环境配置
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
测试多环境配置
启动后可以看到 8081 和 8082 都启动了。