尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Spring Boot 对 Nacos 配置中心的快速使用

Spring Boot 对 Nacos 配置中心的快速使用 一、第一步在 Nacos 控制台添加配置1.1 登录控制台启动 Nacos Server 后浏览器访问http://localhost:8848/nacos默认账号密码均为nacos。1.2 创建配置进入左侧菜单「配置管理」→「配置列表」点击右上角「新增配置」填写以下信息Data IDnacos-config-demo-dev.yaml命名规则见下文GroupDEFAULT_GROUP配置格式YAML配置内容app:name: nacos-config-demoversion: 1.0.0description: 这是一个来自Nacos配置中心的示例配置1.3 Data ID 命名规则Spring Cloud Alibaba Nacos Config 中Data ID 的完整格式为${prefix}-${spring.profiles.active}.${file-extension}prefix默认为spring.application.name的值也可通过spring.cloud.nacos.config.prefix手动指定spring.profiles.active为当前激活的环境如果为空中间的连字符会被省略file-extension为配置内容的数据格式支持properties和yaml二、第二步引入 Maven 依赖在消费方微服务模块的pom.xml中引入 Nacos Config 依赖dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-config/artifactId /dependency dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependency三、第三步配置文件编写application.yamlspring: profiles: active: dev server: port: 8080在src/main/resources下创建bootstrap.yamlspring: application: name: nacos-config-demo cloud: nacos: server-addr: localhost:8848 config: file-extension: yaml # 可选指定命名空间和分组 # namespace: your-namespace-id # group: DEFAULT_GROUP discovery: server-addr: localhost:8848Spring Boot 中配置文件的加载存在优先级顺序bootstrap的优先级高于application。Nacos 配置中心要求在项目初始化时先从远程拉取配置拉取完成后才能保证项目的正常启动。四、第四步主启动类package com.example.nacosdemo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;SpringBootApplicationEnableDiscoveryClientpublic class NacosConfigDemoApplication {public static void main(String[] args) {SpringApplication.run(NacosConfigDemoApplication.class, args);}}EnableDiscoveryClient将当前服务注册到 Nacos 服务列表使其具备服务发现能力。五、第五步编写业务类获取 Nacos 配置package com.example.nacosdemo.controller;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;RestControllerRequestMapping(/config)RefreshScopepublic class ConfigController {Value(${app.name})private String appName;Value(${app.version})private String appVersion;Value(${app.description})private String appDescription;GetMapping(/info)public String getConfigInfo() {return String.format(应用名称: %s, 版本: %s, 描述: %s,appName, appVersion, appDescription);}}启动应用后访问http://localhost:8080/config/info即可看到从 Nacos 配置中心读取的属性值。六、核心注意事项与踩坑指南6.1 Value 注解的正确引入Value注解必须使用org.springframework.beans.factory.annotation.Value包下的版本不要误引入其他包。这是最基本但也最容易疏忽的一点。6.2 Value 中的属性名必须与 Nacos 配置完全一致在项目初始化阶段Nacos 配置的拉取发生在 Spring 容器刷新之前。如果Value中写的属性名在 Nacos 配置中找不到且没有提供默认值应用将直接启动失败。因此务必确保Value(${app.name})中的app.name与 Nacos 配置里的 key一字不差。6.3 RefreshScope 实现配置自动刷新RefreshScope是 Spring Cloud 原生注解其本质是一个特殊的作用域。被该注解标记的 Bean 会被代理包装真实的 Bean 实例按需创建。当 Nacos 配置发生变更时触发RefreshEventRefreshScope会销毁缓存的 Bean 实例下次调用时重新创建并注入最新配置。
返回列表