SpringCloud - 服务注册与配置中心Nacos使用详解6(配置中心3:共享配置)
作者:hangge | 2020-12-10 08:10
当一个项目中的服务数量增加后,配置文件也会相应地增加。而多个配置文件中会存在相同的配置,那么我们可以将相同的配置独立出来,作为该项目中各个服务的共享配置文件,这样每个服务都可以通过 Nacos 进行共享配置的读取。
(2)接着修改项目的配置文件 bootstrap.properties,通过 spring.cloud.nacos.config.shared-configs 属性指定要读取共享配置文件的 DataID(多个文件用,分隔):
(3)接着我们对之前的 Controller 进行修改,在原来的基础上增加了共享配置里的属性获取与输出:
(4)启动项目,访问 /test 接口,可以看到无论是项目默认配置的内容,还是共享配置的内容,都能成功获取到:
(3)接着我们对之前的 Controller 进行修改,在原来的基础上增加了共享配置里的属性获取与输出:
(4)启动项目,访问 /test 接口,可以看到无论是项目默认配置的内容,还是共享配置的内容(即使不在同一个分组),都能成功获取到(并且支持自动刷新):
(2)Controller 这边稍作修改,将各个共享配置里的属性都输出到页面上,运行结果如下:
六、配置中心使用教程2:共享配置
1,基本用法
(1)我们在之前的基础上,增加两个配置:share-config1.properties 和 share-config2.properties(仍然使用默认 Group)。
- 其中 share-config1.properties 配置的内容如下:
share.config1=共享配置1
- 而 share-config2.properties 配置的内容如下:
share.config2=共享配置2
(2)接着修改项目的配置文件 bootstrap.properties,通过 spring.cloud.nacos.config.shared-configs 属性指定要读取共享配置文件的 DataID(多个文件用,分隔):
注意:这种方式虽然简单,但无法指定分组(必须与默认配置在同一个 Group),也无法自动刷新。
spring.cloud.nacos.config.shared-configs=share-config1.properties,share-config2.properties
(3)接着我们对之前的 Controller 进行修改,在原来的基础上增加了共享配置里的属性获取与输出:
@RefreshScope @RestController public class HelloController { @Value("${from}") private String from; @Value("${share.config1}") private String shareConfig1; @Value("${share.config2}") private String shareConfig2; @GetMapping("/test") public String test(){ return this.from + "<br>" + this.shareConfig1 + "<br>" + this.shareConfig2; } }
(4)启动项目,访问 /test 接口,可以看到无论是项目默认配置的内容,还是共享配置的内容,都能成功获取到:
2,进阶用法
(1)前面的样例中共享配置必须与项目默认配置文件处于相同的 Group,但有时我们共享配置是处于其他分组的,比如下面我们新增了两个配置 share-config3.properties 和 share-config4.properties(分别处于 SHARE3_GROUP 和 SHARE4_GROUP):
(2)接着同样修改项目的配置文件 bootstrap.properties,不过这次我们使用 spring.cloud.nacos.config.extension-configs[0] 属性来指定各个共享配置的 dataId、group 以及是否自动刷新。
注意:同上面的方式相比,这种方式可以指定分组,也支持自动刷新。
spring.cloud.nacos.config.extension-configs[0].data-id=share-config3.properties spring.cloud.nacos.config.extension-configs[0].group=SHARE3_GROUP spring.cloud.nacos.config.extension-configs[0].refresh=true spring.cloud.nacos.config.extension-configs[1].data-id=share-config4.properties spring.cloud.nacos.config.extension-configs[1].group=SHARE4_GROUP spring.cloud.nacos.config.extension-configs[1].refresh=true
(3)接着我们对之前的 Controller 进行修改,在原来的基础上增加了共享配置里的属性获取与输出:
@RefreshScope @RestController public class HelloController { @Value("${from}") private String from; @Value("${share.config3}") private String shareConfig3; @Value("${share.config4}") private String shareConfig4; @GetMapping("/test") public String test(){ return this.from + "<br>" + this.shareConfig3 + "<br>" + this.shareConfig4; } }
(4)启动项目,访问 /test 接口,可以看到无论是项目默认配置的内容,还是共享配置的内容(即使不在同一个分组),都能成功获取到(并且支持自动刷新):
附:两种方式结合使用
(1)上面这两种共享配置的实现方式不是互斥的,在同一个项目中可以结合使用:
spring.cloud.nacos.config.shared-configs=share-config1.properties,share-config2.properties spring.cloud.nacos.config.extension-configs[0].data-id=share-config3.properties spring.cloud.nacos.config.extension-configs[0].group=SHARE3_GROUP spring.cloud.nacos.config.extension-configs[0].refresh=true spring.cloud.nacos.config.extension-configs[1].data-id=share-config4.properties spring.cloud.nacos.config.extension-configs[1].group=SHARE4_GROUP spring.cloud.nacos.config.extension-configs[1].refresh=true
(2)Controller 这边稍作修改,将各个共享配置里的属性都输出到页面上,运行结果如下:
@RefreshScope @RestController public class HelloController { @Value("${from}") private String from; @Value("${share.config1}") private String shareConfig1; @Value("${share.config2}") private String shareConfig2; @Value("${share.config3}") private String shareConfig3; @Value("${share.config4}") private String shareConfig4; @GetMapping("/test") public String test(){ return this.from + "<br>" + this.shareConfig1 + "<br>" + this.shareConfig2 + "<br>" + this.shareConfig3 + "<br>" + this.shareConfig4; } }
全部评论(0)