Nacos云配置和多环境使用
官方文档:https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config
bootstrap.properties
创建名为 bootstrap.properties
的配置文件并删除之前创建的 application.yml
配置文件,由于已经在服务端配置,此处不再赘述
# 这里的应用名对应 Nacos Config 中的 Data ID,实际应用名称以配置中心的配置为准
spring.application.name=nacos-provider-config
# 指定查找名为 nacos-provider-config.yaml 的配置文件
spring.cloud.nacos.config.file-extension=yaml
# Nacos Server 的地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
注意:在之前的 Spring Cloud Netflix 课程中有提到过 Spring Boot 配置文件的加载顺序,依次为 bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml ,其中 bootstrap.properties 配置为最高优先级
#启动应用程序
启动应用后我们可以通过日志看到,已经成功加载到了配置文件
#配置的动态更新
Nacos Config 也支持配置的动态更新,操作流程如下:
- 修改服务端配置,增加一个
user.name
的属性
- 修改 Controller ,增加一个请求方法,测试配置更新效果
// 注入配置文件上下文
@Autowired
private ConfigurableApplicationContext applicationContext;
// 从上下文中读取配置
@GetMapping(value = "/hi")
public String sayHi() {
return "Hello " + applicationContext.getEnvironment().getProperty("user.name");
}
- 通过浏览器访问该接口,浏览器显示
Hello Lusifer
1
- 修改服务端配置
此时观察控制台日志,你会发现我们已经成功刷新了配置
- 刷新浏览器,浏览器显示
Hello LusiferLee
1
注意:你可以使用 spring.cloud.nacos.config.refresh.enabled=false 来关闭动态刷新
Spring Boot Profile
我们在做项目开发的时候,生产环境和测试环境的一些配置可能会不一样,有时候一些功能也可能会不一样,所以我们可能会在上线的时候手工修改这些配置信息。但是 Spring 中为我们提供了 Profile 这个功能。我们只需要在启动的时候添加一个虚拟机参数,激活自己环境所要用的 Profile 就可以了。
操作起来很简单,只需要为不同的环境编写专门的配置文件,如:application-dev.yml
、application-prod.yml
, 启动项目时只需要增加一个命令参数 --spring.profiles.active=环境配置
即可,启动命令如下:
java -jar hello-spring-cloud-alibaba-nacos-provider-1.0.0-SNAPSHOT.jar --spring.profiles.active=prod
1
#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 Server 中增加配置
增加一个名为 nacos-provider-config-prod.yaml
的配置
注意:此时,我将配置文件中的端口由 8081 -> 8082
#在项目中增加配置
增加一个名为 bootstrap-prod.properties
的配置文件,内容如下:
spring.profiles.active=prod
spring.application.name=nacos-provider-config
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
主要增加了 spring.profiles.active=prod
配置,用于指定访问 Nacos Server 中的 nacos-provider-config-prod.yaml
配置
#启动应用程序
此时我们有两个配置文件,分别为 bootstrap.properties
和 bootstrap-prod.properties
,我们需要指定启动时加载哪一个配置文件,操作流程如下:
Run
->Edit Configurations..
- 设置需要激活的配置
- 观察日志,判断是否成功加载配置