Nacos既提供注册中心,也提供配置中心。下面分别以两个例子来说明配置中心的使用。
目录
案例一:配置中心使用
人工在Nacos配置内容
客户端使用
案例二:配置拆分与复用
背景
配置拆分复用说明
对pom.xml增加依赖
删除application.properties,增加bootstrap.properties
启动
调用验证
案例一:配置中心使用
人工在Nacos配置内容
在Nacos中人工定义如下
Data ID: firstapp-dev.properties
Group : DEFAULT_GROUP
配置格式: Properties
配置内容: weather=sun
temperature=20.55
其中Data ID的命令规则为:应用名-环境profile名.文件后缀
- 应用名(Data ID前缀):默认为 ${spring.appliction.name}, 也可以使用${spring.cloud.nacos.config.prefix}来配置
- 环境profile名:既${spring.profiles.active}指定的环境。 若不区分环境,则本内容既前面的中划线都可以不用存在。
- 文件后缀:既SpringBoot中配置文件扩展名,也是Nacos中的配置格式。
客户端使用
新建一个project或者module。 在生成的默认pom.xml增加nacos-config和bootstrap依赖。如下
4.0.0 org.springframework.boot spring-boot-starter-parent2.4.11 com.example firstapp0.0.1-SNAPSHOT firstapp firstapp 1.8 org.springframework.boot spring-boot-starterorg.springframework.boot spring-boot-starter-testtest com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config2021.1 org.springframework.cloud spring-cloud-starter-bootstrap3.0.4 org.springframework.boot spring-boot-maven-plugin
创建bootstrap.properties文件(与application.properties文件同目录存放),bootstrap.properties加载顺序先于application.properties 。bootstrap.properties文件内容如下:
spring.application.name=firstapp
#Data ID的前缀(如果不指定,则默认取 ${spring.appliction.name})
spring.cloud.nacos.config.prefix=firstapp
#指定为开发环境
spring.profiles.active=dev
#配置中心服务器地址
spring.cloud.nacos.config.server-addr=39.100.80.168:8848
#命名空间(由于Bug:若这里指定为public会导致高频刷,指定其他命名空间正常。 Bug链接 https://github.com/alibaba/nacos/issues/3460)
#spring.cloud.nacos.config.namespace=public
#配置组(如果不指定,则默认为DEFAULT_GROUP)
spring.cloud.nacos.config.group=DEFAULT_GROUP
#指定文件后缀(如果不指定,则默认为properties)
spring.cloud.nacos.config.file-extension=properties
对SpringBoot启动类中,增加获取配置项并输出的代码。
@SpringBootApplication
public class FirstappApplication {
public static void main(String[] args) throws InterruptedException {
ConfigurableApplicationContext applicationContext = SpringApplication.run(FirstappApplication.class, args);
while (true) {
String weather = applicationContext.getEnvironment().getProperty("weather");
String temperature = applicationContext.getEnvironment().getProperty("temperature");
System.err.println("weather:" + weather + "; temperature: " + temperature);
TimeUnit.SECONDS.sleep(3);
}
}
}
启动运行后,可以看到SpringBoot程序获得了Nacos配置中心的值。
同时,如果在Nacos界面中人工调整配置项的值,SpringBoot会立即自动取得最新值。因为Nacos带自动刷新功能。
可以通过配置 spring.cloud.nacos.config.refresh.enabled=false 来关闭动态刷新
案例二:配置拆分与复用
背景
本案例在前一个案例(2.SpringCloud服务注册与调用:Nacos、openFeign、loadbalancer_zyplanke的专栏-CSDN博客)基础上进行注册中心修改。
配置拆分复用说明
在nacos中配置如下三个Data ID:
- commonshare.properties 放各个服务的公共配置
- paymentService.properties 放支付服务需要的配置
- orderService.properties 放订单服务需要的配置
在Nacos中人工定义如上三个Data ID,内容分别如下:
commonshare.properties:
paymentService.properties:
orderService.properties:
对pom.xml增加依赖
------ 前面省略 ------
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
${springcloudalibaba.version}
org.springframework.cloud
spring-cloud-starter-bootstrap
3.0.4
------ 后面省略 ------
删除application.properties,增加bootstrap.properties
分别删除payment、order服务下的application.properties文件。
在payment服务下新增bootstrap.properties文件,改为从配置中心获取应用程序的配置,bootstrap.properties内容如下:
spring.application.name=payment
#配置中心服务器地址
spring.cloud.nacos.config.server-addr=39.100.80.168:8848
#Data ID的前缀(如果不指定,则默认取 ${spring.appliction.name})
spring.cloud.nacos.config.prefix=paymentService
spring.cloud.nacos.config.group=DEFAULT_GROUP
#指定文件后缀(如果不指定,则默认为properties)
spring.cloud.nacos.config.file-extension=properties
#通用共享配置的信息
spring.cloud.nacos.config.shared-configs[0].data-id=commonshare.properties
spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP
spring.cloud.nacos.config.shared-configs[0].refresh=true
在order服务下新增bootstrap.properties文件,内容如下:
spring.application.name=order
#配置中心服务器地址
spring.cloud.nacos.config.server-addr=39.100.80.168:8848
#Data ID的前缀(如果不指定,则默认取 ${spring.appliction.name})
spring.cloud.nacos.config.prefix=orderService
spring.cloud.nacos.config.group=DEFAULT_GROUP
#指定文件后缀(如果不指定,则默认为properties)
spring.cloud.nacos.config.file-extension=properties
#通用共享配置的信息
spring.cloud.nacos.config.shared-configs[0].data-id=commonshare.properties
spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP
spring.cloud.nacos.config.shared-configs[0].refresh=true
启动
分别启动payment、order服务。
可以看到payment服务启动端口为9999(从nacos配置中心获得的端口配置); 可以看到order服务启动端口为8888(从nacos配置中心获得的端口配置)
调用验证
curl http://localhost:8888/consumer/66
调用Order服务成功,返回信息符合预期。



