二、配置中心 - Nacos

一、服务配置中心

1 配置中心

  • 服务注册中心和配置中心都是nacos,如下为常见参数
namespace:    区分部署环境,默认为public,可以自定义prod,uat,development等,互相隔离
               在项目中要用naocos控制台生成的uuid随机数

group:        区分不同的功能模块,默认为DEFAULT_GROUP,可自定义如crm,btob,msm

dataId:       具体的配置文件名称,
              一般格式为{spring.application.name}-{spring.profile.active}.yaml

在这里插入图片描述

2 Client Server

   <!--web模块,这两个一般绑定在一起-->
   <!--引入nacos,一般都是注册中心和配置中心一起-->
   <dependency>
       <groupId>com.alibaba.cloud</groupId>
       <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
   </dependency>
// 主启动类
@EnableDiscoveryClient

2.1 配置文件

bootstrap.yaml

# 如下的内容必须放在bootstrap.yaml中
spring:
  profiles:
    active: prod

  application:
    name: erick-consumer

  cloud:
    nacos:
      discovery:
        server-addr: 60.205.229.31:9001     # 服务注册的Nacos地址,不用写http
        namespace: f8117703-ca23-43f4-a4bf-f1395f377008 # 服务注册时候的命名空间
        group: nike   # 服务注册时候的分组
      config:
        server-addr: 60.205.229.31:9001     # 注册中心
        namespace: f8117703-ca23-43f4-a4bf-f1395f377008 # 命名空间的uuid
        file-extension: yaml
        prefix: ${spring.application.name}  # 配置文件前缀,
        # 配置文件格式:erick-consumer-prod.yaml
        group: nike

application.yaml

server:
  port: 9001

management:
  endpoints:
    web:
      exposure:
        include: '*'
spring:
  profiles: prod

测试类

  • 在需要动态刷新的class或者bean上,添加@RefreshScope ,达到实时刷新的效果
import org.springframework.cloud.context.config.annotation.RefreshScope;

@RestController
@RequestMapping("/config")
@RefreshScope  // 动态刷新
public class InfoController {

    @Value("${name}")
    private String name;

    @Value("${password}")
    private String password;

    @GetMapping("/info")
    public String getInfo() {
        return name + password;
    }
}

版权声明:本文为weixin_43374578原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。