在Kubernetes (K8S) 中使用 Spring Cloud 时,我们经常会遇到读取不到 Nacos 配置文件的问题。本篇文章将为你详细讲解如何解决这个问题,帮助你顺利实现 Spring Cloud 与 Nacos 的配置文件读取。

### 1. 步骤概览

下面是解决该问题的步骤概览,让你更好地理解整个流程:

| 步骤 | 操作 |
|-------------------------------------|-------------------------------------------------------------------------------------------|
| 1. 在 Nacos 中创建配置文件 | 在 Nacos 控制台上创建需要的配置文件 |
| 2. 添加 Nacos 依赖 | 在 Spring Cloud 项目中添加 Nacos 相关的依赖 |
| 3. 配置 bootstrap.properties 文件 | 配置 Spring Cloud 项目的 bootstrap.properties 文件,指定 Nacos 的地址和配置文件信息 |
| 4. 读取 Nacos 配置文件 | 在 Spring Cloud 项目中通过 @Value 注解或 Environment 类读取配置文件中的属性值 |

### 2. 具体步骤及代码示例

#### 步骤 1: 在 Nacos 中创建配置文件

首先,登录 Nacos 控制台,创建一个配置文件。假设我们创建了一个名为 `test-config` 的配置文件,并添加了一些属性,如 `test.key=value`。

#### 步骤 2: 添加 Nacos 依赖

在 Spring Cloud 项目的 `pom.xml` 文件中添加 Nacos Discovery 相关依赖:

```xml

com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config

```

#### 步骤 3: 配置 bootstrap.properties 文件

在 Spring Cloud 项目的 `src/main/resources` 目录下创建 `bootstrap.properties` 文件,配置 Nacos 相关信息:

```properties
spring.application.name=my-application
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=your-namespace
spring.cloud.nacos.config.prefix=your-prefix
spring.cloud.nacos.config.file-extension=properties
```

- `spring.cloud.nacos.config.server-addr`: Nacos 服务器地址
- `spring.cloud.nacos.config.namespace`: Nacos 命名空间
- `spring.cloud.nacos.config.prefix`: 配置文件前缀
- `spring.cloud.nacos.config.file-extension`: 配置文件格式(properties 或 yaml)

#### 步骤 4: 读取 Nacos 配置文件

在 Spring Cloud 项目的任意 bean 中,通过 `@Value` 注解或 `Environment` 类获取 Nacos 配置文件中的属性值:

```java
@RestController
public class ConfigController {

@Value("${test.key}")
private String testKey;

@Autowired
private Environment environment;

@GetMapping("/config")
public String getConfig() {
String keyFromValue = environment.getProperty("test.key");
return "Value from @Value: " + testKey + ", Value from Environment: " + keyFromValue;
}
}
```

现在,你可以通过访问 `/config` 接口来获取从 Nacos 配置文件中读取的属性值了。

### 总结

通过以上步骤,你应该已经成功解决了 Spring Cloud 项目读取不到 Nacos 配置文件的问题。在实际项目中,遵循这些步骤,能够更好地使用 Nacos 作为配置中心,为分布式微服务架构提供强大的支持。希望这篇文章对你有所帮助!