☰
Spring Boot 对 Nacos 配置中心的快速使用
2026/10/4 5:02:37 网站建设 项目流程

一、第一步:在 Nacos 控制台添加配置

1.1 登录控制台

启动 Nacos Server 后,浏览器访问http://localhost:8848/nacos,默认账号密码均为nacos。

1.2 创建配置

进入左侧菜单「配置管理」→「配置列表」,点击右上角「新增配置」,填写以下信息:

  • Data ID:nacos-config-demo-dev.yaml(命名规则见下文)

  • Group:DEFAULT_GROUP

  • 配置格式:YAML

  • 配置内容:

app:
name: nacos-config-demo
version: 1.0.0
description: 这是一个来自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> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>

三、第三步:配置文件编写

application.yaml

spring: profiles: active: dev server: port: 8080

在src/main/resources下创建bootstrap.yaml:

spring: 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:8848

Spring 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;

@SpringBootApplication
@EnableDiscoveryClient
public 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;

@RestController
@RequestMapping("/config")
@RefreshScope
public 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 配置发生变更时,触发RefreshEvent,RefreshScope会销毁缓存的 Bean 实例,下次调用时重新创建并注入最新配置。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询