首页 > 其他分享 >8.引入Nacos组件----配置功能

8.引入Nacos组件----配置功能

时间:2022-09-01 21:25:17浏览次数:48  
标签:服务 name age 配置 Nacos ---- 组件 order

1.引入Nacos作为配置中心的相关依赖

在 webshop-common 项目的 pom.xml 文件下,导入Nacos作为配置中心的相关依赖

<!--nacos配置中心-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2.添加bootstrap.properties文件,配置Nacos Config元数据

#服务名
spring.application.name=webshop-order
#nacos服务地址
spring.cloud.nacos.config.server-addr=120.48.96.228:8848

3.开启动态刷新功能

如果没有使用配置中心的话,一旦服务配置有更改就会需要重新启动,那当服务都去配置中心拿相应配置信息时,就需要开启动态刷新这个功能来感知配置中心内容的变化,从而作出改变。
这里使用@RefreshScope开启动态刷新功能,在使用到配置的类上添加该注解,如OrderController:

@RestController
@RequestMapping("order/order")
@RefreshScope
public class OrderController {
    //...
}

4.在Nacos Server上添加配置

  1. 登录Nacos Server,点击配置列表,选择添加配置(加号,新建配置)
  2. 输入配置信息,Data ID默认一般都是:应用名.properties 如:webshop-order.properties
order.user.name=zhangsan
order.user.age=23

5.动态展示配置中心的值

  1. 在controller类,写一个接口,通过@Value取得配置文件的值,展示给前端
@RestController
@RequestMapping("order/order")
@RefreshScope
public class OrderController {
    @Autowired
    private OrderService orderService;

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

    @Value("${order.user.age}")
    private Integer age;
    
    @RequestMapping("/test")
    public R test() {
        return R.ok().put("name: ", name).put("age: ", age);
    }
    //...
}
  1. 启动 webshop-order 服务,访问:http://localhost:9000/order/order/test
    显示配置服务Config Server 中的数据;
    说明是可以成功取到配置中心值的,这里要注意,配置中心上的配置文件一定要先创建好,然后再启动服务,否则本地项目没有配置相应的属性,@Value又要去取,那启动就会报错。

  2. 修改Nacos中的配置文件中的值

  3. 不重启服务,直接刷新页面:可以发现属性值已经发生变化了;

  4. 引入Nacos作为配置中心,统一维护各服务的配置信息,修改后动态刷新,避免了反复重启服务对业务造成影响,同时也更易于维护。

标签:服务,name,age,配置,Nacos,----,组件,order
From: https://www.cnblogs.com/lailix/p/16647811.html

相关文章

  • centos7 安装docker和docker-compose
     需要切换到root权限执行所有操作sudo-i  1、安装docker1.1更新yumyumupdate 1.2安装yum-utilsyuminstall-yyum-utilsdevice-mapper-persistent-......
  • 【Java基础】方法的重载、可变形参
    1.方法重载同一个类中,方法名相同,参数个数或参数类型不同。根据方法的参数列表的不同来区分。publicintadd(intx,inty){returnx+y;}pu......
  • Java常用类之日期操作类
    日期操作类在Java中对日期的操作类常用的有以下4种:Date类Calendar类DateFormat类SimpleDateFormat类一起来了解一下各个类如何使用的吧!!! 一、Date类1、......
  • 数据库学习笔记 (本数据库学习笔记以SQL sever 2019 为例进行学习) 20220831 第四节课
    两层映像两层映像E-CMapping:ExternalSchema-ConceptualSchemaMapping----将外模式映射为概念模式,从而支持实现数据概念视图向外部视图的转换----便于用户观察和......
  • 小迪安全D3笔记:基础入门-搭建安全拓展
    title:小迪安全D3笔记:基础入门-搭建安全拓展author:TTdate:2022-09-01域名扫描只能扫描出来域名文件,而域名文件只是占服务器资源的一小部分;IP扫描可以直接扫描出来......
  • 【js】for 循环中使用 setTimeout 的问题
    问题:下面代码的输出结果不是间隔3秒依次输出1,2,3,4,5。而是隔了3秒连续输出6。这是为什么呢?for(vari=1;i<=5;i++){setTimeout(functiontimer(){......
  • 3.多线程开发
    线程的常用方法:- t.start(),当前线程准备就绪(等待CPU调度,具体时间由CPU进行决定)   -t.join(),等待当前线程的任务执行完毕后再向下继续执行。i......
  • 06.通过意图传递数据
    4、向下一个活动传递数据之前我们只是简单地使用Intent来启动一个活动,其实Intent还可以在启动活动的时候传递数据的。在启动活动时传递数据的思路很简单,Intent中提供了一......
  • IIC协议介绍
    讲解I2C协议之前,首先列出GPIO的输出模式配置图,输出模式有推挽输出、开漏输出。推挽输出:可以输出高、低电平,连接数字器件。推挽结果一般是指两个三极管分别受两互补信号的......
  • 转换流
    @Testpublicvoidtest4()throwsIOException{InputStreamReaderisr=null;try{FileInputStreamfis=newFileInputStream("......