返回

Nacos 配置信息放入 Bootstrap.properties 的剖析

后端

Nacos 配置为何属于 Bootstrap.properties

在微服务配置管理中,使用 Nacos 时,把 Nacos 配置信息放入 application.properties 或 application.yml 并非最佳实践。这是因为这些文件是在 Spring Boot 应用启动后才加载的,而 Nacos 配置信息则需要在应用启动时加载。

如果将 Nacos 配置信息放入 application.properties 或 application.yml 中 ,应用启动时无法连接到 Nacos 服务器,导致启动失败。

因此,应将 Nacos 配置信息放入 Bootstrap.properties 文件 。此文件在 Spring Boot 应用启动前加载,确保 Nacos 配置信息在应用启动时已加载完成,确保应用顺利启动。

Bootstrap.properties 加载顺序和优先级

Bootstrap.properties 加载顺序和优先级如下:

  1. bootstrap.properties :默认路径 classpath:/BOOT-INF/bootstrap.properties
  2. bootstrap.yml :如果 bootstrap.properties 不存在,则加载 bootstrap.yml
  3. application.properties :如果 bootstrap.propertiesbootstrap.yml 不存在,则加载 application.properties
  4. application.yml :如果以上文件均不存在,则加载 application.yml

Bootstrap.properties 优先级高于 application.properties 和 application.yml 。在 Bootstrap.properties 中配置的 Nacos 配置信息将覆盖其他文件中的配置信息。

Bootstrap.properties 中配置 Nacos

在 Bootstrap.properties 中配置 Nacos 配置信息,只需以下步骤:

  1. 添加以下配置:
spring.cloud.nacos.config.server-addr=localhost:8848

其中,spring.cloud.nacos.config.server-addr 为 Nacos 服务器地址和端口。

  1. 将 Nacos 配置信息放入 Nacos 服务器。

  2. 重启 Spring Boot 应用。

Nacos 连接报错排查

如果项目启动时出现 Nacos 连接报错,可通过以下步骤排查:

  1. 检查 Bootstrap.properties 是否配置了 Nacos 配置信息。
  2. 检查 Nacos 服务器是否启动并正常运行。
  3. 检查 Nacos 服务器地址和端口是否正确。
  4. 检查防火墙是否阻止了通信。

常見問題解答

1. 如何在开发环境中配置多个 Nacos 服务器?

spring.cloud.nacos.config.server-addr=nacos1:8848,nacos2:8848

2. 如何动态刷新 Nacos 配置?

@NacosPropertySource(dataId = "example", autoRefreshed = true)
class NacosController {
    @Value("${example}")
    private String example;
}

3. 如何指定 Nacos 配置文件?

spring.cloud.nacos.config.group=DEV

4. 如何设置 Nacos 连接超时时间?

spring.cloud.nacos.config.connect-timeout-ms=5000

5. 如何将 Nacos 配置信息与应用默认配置合并?

spring.cloud.nacos.config.shared-dataids=default