Java - stage04 - day04 - day05 - Nacos配置中心

1. Nacos配置快速入门

  1. 创建ProviderLogController对象
package com.jt.provider.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 基于此Controller演示配置中心的作用,
 * 在这个Controller中我们会基于日志对象
 * 进行日志输出测试
 */
@RefreshScope   //告诉系统底层,配置中心内容发生变化,重新构建此对象
@RestController
public class ProviderLogController {
    //假如在log对象所在的类上使用了@Slf4j,log不需要我们手动创建,lombok会帮我们创建
    private static Logger log = LoggerFactory.getLogger(ProviderLogController.class);

    @GetMapping("/provider/log/doLog01")
    public String doLog01() {
        //trace < debug < info < warn < error
        log.trace("===trace===");
        log.debug("===debug===");
        log.info("===info===");
        log.warn("===warn===");
        log.error("===error===");
        return "log config test";
    }

    public ProviderLogController() {
        System.out.println("==ProviderLogController()==");
    }

    @Value("${logging.level.com.jt:error}")
    private String logLevel;
    @GetMapping("/provider/log/doLog02")
    public String doLog02() {
        log.info("log.level is {}", logLevel);  //这里的{}表示占位符
        return "log level is " + logLevel;
    }
}
  1. 添加依赖
<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 </dependency>
  1. 将项目sca-provider的application.yml的名字修改为bootstrap.yml
spring:
  application:
    name: sca-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        server-addr: localhost:8848 #定义配置中心地址
        file-extension: yml #定义配置中心配置的格式

2. 新建Nacos配置

在这里插入图片描述

3. 测试Nacos数据读取

浏览器中输入:http://localhost:8082/provider/log/doLog01
在这里插入图片描述

@RefreshScope注解

第一步:在ProviderLogController类的上面添加一个@RefreshScope注解,例如:

@RefreshScope
@RestController
public class ProviderLogController{
  //.....
}

其中,@RefreshScope的作用是在配置中心的相关配置发生变化以后,能够及时看到类中属性值的更新(底层是通过重新创建Controller对象的方式,对属性进行了重新初始化)。

第二步:添加ProviderLogController中添加一个获取日志级别(debug<info<warn<error)的的属性和方法,代码如下:

@Value("${logging.level.com.jt:error}")
private String logLevel;
@GetMapping("/provider/log/doLog02")
public String doLog02(){
   log.info("log level is  {}",logLevel);
   return  "log level  is "+logLevel;
}

第三步:启动sca-provider服务,然后打开浏览器并输入http://localhost:8081/provider/log/doLog02进行访问测试。

命名空间设计

在这里插入图片描述

spring:
  cloud:
    nacos:
      config:
        namespace: 6058fd3f-0d4d-44f2-85d6-5fc7d2348046
        ……

分组设计及实现

当我们在指定命名空间下,按环境或服务做好了配置以后,有时还需要基于服务做分组配置,例如,一个服务在不同时间节点(节假日,活动等)切换不同的配置,可以在新建配置时指定分组名称,如图所示:
在这里插入图片描述
其中,这里的useLocalCache为自己定义的配置值,表示是否使用本地缓存.

配置发布以后,修改boostrap.yml配置类,在其内部指定我们刚刚创建的分组,代码如下:

server:
  port: 8081
spring:
  application:
    name: sca-provider
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        group: DEV_GROUP_51 # Group, default is DEFAULT_GROUP
        file-extension: yml # Configure the data format of the content, default to properties
        namespace: 7da4aa75-f64c-43c6-b101-9d77ad96f1c0

共享配置设计及读取

第一步:在nacos中创建一个共享配置文件,例如:
在这里插入图片描述
第二步:在指定的微服务配置文件(bootstrap.yml)中设置对共享配置文件的读取,例如:

spring:
  application:
    name: sca-provider
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        # 命名空间
        namespace: 83ed55a5-1dd9-4b84-a5fe-a734e4a6ec6d
        # 分组名
        # group: DEFAULT_GROUP
        # 配置中心文件扩展名
        file-extension: yml
        # 共享配置
        shared-configs[0]:
                data-id: app-public-dev.yml
                refresh: true #默认false,共享配置更新,引用此配置的地方是否要更新

第三步:在指定的Controller类中读取和应用共享配置即可

package com.jt.provider.controller;

@RefreshScope
@RestController
public class ProviderPageController {
    @Value("${page.pageSize:10}")
    private Integer pageSize;
    @GetMapping("/provider/page/doGetPageSize")
    public String doGetPageSize(){
        //return String.format()
        return "page size is "+pageSize;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值