spring cloud alibaba(4)-nacos配置中心

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 15:57   3675   0

nacos不仅是注册中心,同时也是配置中心,其安装和集群等参考上一篇

pom.xml

  <dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  </dependency>

配置

127.0.0.1:8848是配置中心地址

spring:
  application:
    name: service
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848

代码

这里设置了一个动态参数hello,其值会动态从配置中心获取,如果配置中心没有设置,默认值为world。注解@RefreshScope可实现动态刷新参数

@RestController
@RefreshScope    //自动刷新
public class HelloController {
 
 @Value(value="${hello:world}")
 private String hello;
 
 @RequestMapping("/hello")
 public void hello() {
  System.out.println(hello);

动态更新配置

启动项目,以上接口默认会打印出world。通过nacos管理页面来动态修改这个值。配置管理--配置列表--点击右边的加号。

  • Date ID:项目中配置的服务名
  • Group:使用默认DEFAULT_GROUP
  • 配置内容hello=abc

配置后控制台会有日志刷新,再次请求接口会显示abc

Data Id

Data Id可以是一组配置参数的id,可以直接用服务应用名命名service,全名是service-profile.properties。profile参数可参考我写的profile,没有可以省略。后缀如果没写默认为properties。比如profile是dev,后缀是yml,配置如下:

项目中还要配置file-extension为yml

spring:
  application:
    name: service
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml

namespace和group

namespace可包含多个group,group可包含多个Date ID。namespace和group本生并没有特别含义,可以用来隔离不同的配置。比如一个公司每个项目组使用不同的namespace,每个项目用不同的group,不同的模块用不同Date ID。具体你可以自行规划。如果不设置会用默认的namespace和group。

在nacos控制台命名空间中可添加namespace,注意,添加后的id是系统生成的一串字符,而不是你输入的名称

配置namespace和group

spring:
  application:
    name: service
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml
        group: group1
        namespace: 71f97c35-15b1-493d-bdf3-276257124a6e

扩展配置

在我们多个模块,甚至多个不同的项目中,可能会存在一些相同的配置,可以在ext-config中配置多个扩展的公共data id,可实现各项目同步配置,refresh默认为false,改为true实现自动更新。扩展配置生效的优先级比自生配置低

spring:
  application:
    name: service
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml
        group: group1
        namespace: 71f97c35-15b1-493d-bdf3-276257124a6e
        ext-config:
        - data-id: demo1.yml
          group: group2
          refresh: true

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP