首页 > 其他分享 >三、SpringCloud Alibab使用nacos作为配置中心

三、SpringCloud Alibab使用nacos作为配置中心

时间:2023-05-14 16:26:18浏览次数:45  
标签:Alibab spring 配置 nacos consumer SpringCloud config cloud

nacos不仅作为注册中心,还可以作为配置中心。

 

在Consumer添加依赖:

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

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bootstrap</artifactId>
        <version>3.1.1</version>
    </dependency>

添加bootstrap.properties:

spring.cloud.nacos.config.server-addr=127.0.0.1:8848

nacos配置要放在bootstrap.properties文件中。

 

打开Nacos控制台,在左侧的配置管理 > 配置列表下点击创建配置按钮,

 

Data ID填的是服务名,Group是组名,默认值是DEFAULT_GROUP。

 

修改HelloConsumer:

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

@RequestMapping("/configValue")
public String configValue() {
    return my;
}

访问http://localhost:7001/consumer/configValue,看到123

 

当Nacos Config加载配置时,还会加载DataId为${spring.application.name}.${file-extension:properties}的基本配置,以及DataId为${spring.application.name}-${profile}.${file extension:properties}。如果需要使用不同环境中的不同配置,可以使用spring提供的${spring.profiles.active}配置。例如:

在bootstrap.properties增加配置:

spring.profiles.active=dev

在nacos重新配置:

 

Data ID为consumer-dev.properties,必须写上文件后缀名。访问http://localhost:7001/consumer/configValue,看到123

 

nacos还支持yaml格式的配置文件,在bootstrap.properties增加配置:

spring.application.name=consumer

spring.profiles.active=dev
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

spring.cloud.nacos.config.file-extension=yml

在nacos重新配置:

 

注意spring.cloud.nacos.config.file-extension的值要和Data ID的文件后缀名相同。

 

访问http://localhost:7001/consumer/configValue,看到123。在nacos修改配置的my为123tyui,访问http://localhost:7001/consumer/configValue,看到123。没看到最新的配置。需要在HelloConsumer加@RefreshScope,不用重启就可看到修改后的配置。

 

将HelloConsumer上的@RefreshScope和@Value("${my}")注释,添加:

@Data
@Component
@ConfigurationProperties(prefix = "user")
public class UserConfig {

    private String name;

    private Integer age;
}

在到ConsumerApplication启动类添加@EnableConfigurationProperties。修改HelloConsumer:

@Autowired
private UserConfig userConfig;

 @RequestMapping("/userConfig")
public UserConfig userConfig() {
    return userConfig;
}

在nacos添加配置:

 

访问http://localhost:7001/consumer/userConfig,看到{"name":"张三","age":36}。修改nacos配置:

发布配置后不重启Consumer,访问http://localhost:7001/consumer/userConfig,看到{"name":"张三","age":18}。@ConfigurationProperties获取配置是不需要添加@RefreshScope不重启即可获取修改后的配置值。@Value获取配置是需要添加@RefreshScope才能不重启获取修改后的配置值

 

命名空间用于隔离不同租户的配置。组和数据ID在不同的命名空间中可以是相同的。命名空间的典型场景是不同环境的配置隔离,例如,开发/测试环境和生产环境(配置和服务等)之间的隔离。如果${spring.cloud.Nacos.config.namespace}中未指定命名空间,则使用Nacos的“Public”命名空间。在nacos添加名为dev的namespace,namesapce id是ccf23046-6117-44c2-9e15-a26e1fcfe601。在bootstrap.properties增加配置:

spring.application.name=consumer

spring.profiles.active=dev
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

spring.cloud.nacos.config.file-extension=yml

spring.cloud.nacos.config.namespace=ccf23046-6117-44c2-9e15-a26e1fcfe601
spring.cloud.nacos.config.group=myGrourp

自定义组名myGrourp。在nacos中新增配置,namespace选择dev:

访问http://localhost:7001/consumer/userConfig,看到{"name":"李四","age":18}

标签:Alibab,spring,配置,nacos,consumer,SpringCloud,config,cloud
From: https://www.cnblogs.com/shigongp/p/17399348.html

相关文章

  • Springcloud 开始来了解
    为什么要学习springcloud?“微服务”一词源于MartinFowler的名为Microservices的博文,简单地说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTfulAPI进行通信协作。......
  • 二、SpringCloud Alibaba使用RestTemplate
    新建模块Producer,pom.xml如下:<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http......
  • 一、SpringCloud Alibaba之Nacos作为注册中心
    一、简介SpringCloud阿里巴巴旨在为微服务开发提供一站式解决方案。该项目包括开发分布式应用程序和服务所需的组件,以便开发人员可以使用SpringCloud编程模型轻松地开发分布式应用。使用SpringCloudAlibaba,只需要添加一些注释和配置,就可以将阿里巴巴的分布式解决方案用于您的......
  • Nacos 核心原理解读+高性能微服务系统实战-手撷芙蓉策虯驷
    Nacos核心原理解读+高性能微服务系统实战高性能微服务系统实战:构建稳定、高效的微服务架构关键字:微服务、高性能、系统实战、架构设计、容器化随着互联网的快速发展,越来越多的企业开始采用微服务架构来构建大型应用系统。相比于传统的单体架构,微服务架构具有更好的灵活性、可扩展......
  • Nacos Client 源码分析(三)回调机制
    文本使用的Nacos版本为2.2.21.概述通过前两篇文章,我们已经大致了解了NacosClient的服务订阅流程以及EventListener的回调机制。然而,NacosClient对配置信息的变更的监听,并没有采用和服务订阅相同的基于事件的发布订阅模式,而是使用了另一种监听机制。下面进行简要分......
  • SpringCloud LoadBalancer
    SpringCloud提供了自己的客户端负载均衡器抽象和实现。对于负载平衡机制,增加了ReactiveLoadBalancer接口,并为其提供了基于RoundRobin和Random的实现。负载均衡策略默认是RoundRobin。支持ServiceInstanceListSupplier的基于服务发现的实现,该实现使用类路径中可用的发现客户端从......
  • 创建SpringCloud项目
    SpringCloud简介SpringCloud是目前国内使用最广泛的微服务框架。SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验。SpringCloud常用组件1.服务注册发现:Eureka,Nacos,Consul2.服务远程调用:OpenFeign,Dubbo3.服务链路......
  • Nacos Client 源码分析(二)服务订阅与推送消息处理
    1.概述在上一篇文章《NacosClient源码分析(一)事件的发布与订阅》分析了NacosClient的发布订阅机制,但我们现在还不清楚NotifyCenter的publishEvent方法是怎么被调用的以及客户端向服务端订阅服务的具体流程。下面我们对继续分析Nacos的源码。2.服务订阅还是从NacosNamin......
  • com-alibaba-fastjson转换json时默认将属性第一个字母转小写
    问题描述将实体类对象转为json字符串的时候,会将属性名首字母改为小写例如此出User队形有两个属性,USER_NAME和USER_AGE,首字母均为大写将实体类对象转为JSON后首字母全都转换为了小写解决方法这是因为阿里巴巴的fastjson框架默认使用了JavaBean规范中的命名约定,将属性名首字......
  • SpringCloud之Zookeeper作为配置中心
    Zookeeper提供了一个分层的命名空间,让客户端可以存储任意数据,例如配置数据。SpringCloudZookeeperConfig是ConfigServer和Client的替代方案。在特殊的“bootstrap”阶段,配置被加载到Spring环境中。默认情况下,配置存储在/config命名空间中。将根据应用程序的名称和活动配置文件......