初探 SpringCloud Alibaba - Nacos

写在开头,此部分博客为记录自学项目中学习过程整理,并非详细技术点研究。

参考文档

关于Nacos
Nacos Config Example
Nacos Discovery Example

SpringCloud Alibaba - Nacos

注册中心(服务发现、注册)

  • 引入nacos-discovery依赖

    <dependency>
    	<groupId>com.alibaba.cloud</groupId>
    	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    
  • 下载nacos-server ,解压后启动:startup.cmd
    在这里插入图片描述

  • 服务启动类application添加@EnableDiscoveryClient注解

    @MapperScan(value = "com.bcxtm.gulimall.product.dao")
    @EnableDiscoveryClient
    @SpringBootApplication
    public class GulimallProductApplication {
          
          
    
        public static void main(String[] args) {
          
          
            SpringApplication.run(GulimallProductApplication.class, args);
        }
    }
    
  • 配置文件配置服务注册服务器及服务名称

    spring:
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848
      application:
        name: gulimall-product
    
  • 启动服务,浏览器访问127.0.0.1:8848,登录nacos,查看服务注册信息。(用户名密码默认为:nacos)
    在这里插入图片描述
    配置中心(动态配置管理)

  • 引入nacos-config依赖

    <dependency>
    	<groupId>com.alibaba.cloud</groupId>
    	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    
  • 创建/resource/bootstrap.properties配置文件,配置 Nacos Config 元数据

    spring.application.name=gulimall-coupon
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    
  • 通过nacos配置中心添加配置

    扫描二维码关注公众号,回复: 13034110 查看本文章

    需要注意,引入依赖后,服务启动时会在console打印默认的配置规则

    c.a.c.n.c.NacosPropertySourceBuilder     : 
    Ignore the empty nacos configuration and get it based on dataId[gulimall-coupon.properties] & group[DEFAULT_GROUP]
    

    可以发现:默认规则为:gulimall-coupon.properties;组别为:DEFAULT_GROUP

    在nacos配置中心->配置管理->配置列表,添加配置:
    在这里插入图片描述

  • resource/application.properties中添加userNameuserAge数据。

    userName=BCXTM
    userAge=24
    
  • 完成上述两步后,应用会从 Nacos Config 中获取相应的配置,并添加在 Spring Environment 的 PropertySources 中。这里我们使用 @Value 注解来将对应的配置注入到 Controller 的 userNameuserAge 字段,并添加@RefreshScope 打开动态刷新功能。

    @RestController
    @RefreshScope
    @RequestMapping("coupon/coupon")
    public class CouponController {
          
          
    
        @Value("${userName}")
        private String userName;
    
        @Value("${userAge}")
        private String userAge;
    
        @RequestMapping(value = "/test")
        public R test() {
          
          
            return new R().put("userName", userName).put("userAge", userAge);
        }
    }
    
  • 启动项目,使用postman发送请求查看返回结果

    {
          
          
        "msg": "success",
        "code": 0,
        "userName": "Bcxtm",
        "userAge": "24"
    }
    
  • nacos配置中心中修改配置信息,并点击确认发布
    在这里插入图片描述在这里插入图片描述

  • 再次请求接口,查看结果

    {
          
          
        "msg": "success",
        "code": 0,
        "userName": "bcxtm666",
        "userAge": "24666"
    }
    
  • 在服务console上可以看到,刷新了配置中的这两个数据

    o.s.c.e.event.RefreshEventListener       : Refresh keys changed: [userName, userAge]
    

猜你喜欢

转载自blog.csdn.net/Nerver_77/article/details/107453634