最新谷粒商城:05(1),字节跳动+腾讯+华为+小米+阿里面试题分享

最后

如果觉得本文对你有帮助的话,不妨给我点个赞,关注一下吧!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

private String age;

@RequestMapping(“/test”)

public R test() {

return R.ok().put(“name”, name).put(“age”, age);

}

在这里插入图片描述

在这里插入图片描述

  • **弊端:**修改起来非常繁琐,需要修改配置文件中的内容,重新上线。如果部署多台机器,非常麻烦。

  • 使用配置中心控制配置

在项目启动的时候可以看到,会加载nacos中名为gulimall-coupon.properties的配置,所以只要配置中心中存在该文件,即可通过配置中心进行访问。

在这里插入图片描述

在这里插入图片描述

  • 选择右上角加号,新增配置

在这里插入图片描述

  • 创建gulimall-coupon.properties配置,并填写配置内容后发布

在这里插入图片描述

在这里插入图片描述

  • 删除项目中application.properties中的配置后重启项目访问http://localhost:7000/coupon/coupon/test仍可以获取数据在这里插入图片描述

  • 在controller上,添加@RefreshScope注解,即可实现动态刷新。

在这里插入图片描述

  • 如果想要修改,在nacos配置列表中对配置进行编辑即可。

在这里插入图片描述在这里插入图片描述

访问地址也可动态实时刷新,获取最新数据。

Nacos Config数据结构

在这里插入图片描述

Nacos Config 主要通过 dataId 和 group 来唯一确定一条配置。

Nacos Client 从 Nacos Server 端获取数据时,调用的是此接口 ConfigService.getConfig(String dataId, String group, long timeoutMs)。

Spring Cloud 应用获取数据

dataID:

在 Nacos Config Starter 中,dataId 的拼接格式如下

  • ${prefix} - ${spring.profiles.active} . ${file-extension} prefix 默认为 spring.application.name

的值,也可以通过配置项 spring.cloud.nacos.config.prefix 来配置。

  • spring.profiles.active 即为当前环境对应的 profile

注意,当 activeprofile 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成

p r e f i x . {prefix}. prefix.{file-extension}

file-extension 为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension 来配置。 目前只支持 properties 类型。

Group:

Group 默认为 DEFAULT_GROUP,可以通过 spring.cloud.nacos.config.group 配置。

  1. 在应用中使用@Value 和@RefreshScope

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

@RefreshScope

class SampleController {

@Value(“${user.name}”)

String userName;

@Value(“${user.age}”)

int age;

}

  1. 如何使用Nacos作为配置中心统一管理配置
  • 引入spring-cloud-starter-alibaba-nacos-config依赖

  • 创建bootstrap.properties并配置应用名和Nacos配置中心地址(前提:启动Nacos服务器)

  • 需要给配置中心默认添加一个叫数据集(Data Id)gulimall-coupon.properties。

默认规则:应用名.properties

  • 应用名.properties添加配置

  • 动态获取配置

使用注解@RefreshScope:动态获取并刷新配置

使用注解@Value("${配置项的名}"):获取配置

如果配置中心和当前应用的配置文件中都配置了相同的项,优先使用配置中心的配置。

  1. 进阶
  • 核心概念

| 名称 | 解释 |

| — | — |

| 命名空间 | 用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 GroupData ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。 |

| 配置集 | 一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配 置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。 |

| 配置集 ID | Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名规则保证全局唯一性。此命名规则非强制。 |

| 配置分组 | Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置和MQ_topic 配置。 |

  • 命名空间:配置隔离

默认:public(保留空间);默认新增的所有配置都在public空间。

举例:

  1. 利用命名空间做环境隔离

注意:在bootstrap.properties中配置使用哪一个命名空间,使用命名空间id进行标识

  • 开发、测试、生产环境均有不同配置。可以新建不同命名空间。

在这里插入图片描述

  • 可以在不同命名空间下创建相同配置gulimall-coupon.properties

在这里插入图片描述在这里插入图片描述

  • 服务启动后,默认会寻找public命名空间下的配置。可以在bootstrap.properties中配置使用不同命名空间

spring.cloud.nacos.config.namespace=命名空间id

在这里插入图片描述

  • 服务重启后,可以访问到dev中的配置

在这里插入图片描述

  1. 基于每一个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值