Nacos 配置信息放入 Bootstrap.properties 的剖析
2023-07-27 23:43:41
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 加载顺序和优先级如下:
- bootstrap.properties :默认路径
classpath:/BOOT-INF/bootstrap.properties
。 - bootstrap.yml :如果
bootstrap.properties
不存在,则加载bootstrap.yml
。 - application.properties :如果
bootstrap.properties
和bootstrap.yml
不存在,则加载application.properties
。 - application.yml :如果以上文件均不存在,则加载
application.yml
。
Bootstrap.properties 优先级高于 application.properties 和 application.yml 。在 Bootstrap.properties 中配置的 Nacos 配置信息将覆盖其他文件中的配置信息。
Bootstrap.properties 中配置 Nacos
在 Bootstrap.properties 中配置 Nacos 配置信息,只需以下步骤:
- 添加以下配置:
spring.cloud.nacos.config.server-addr=localhost:8848
其中,spring.cloud.nacos.config.server-addr
为 Nacos 服务器地址和端口。
-
将 Nacos 配置信息放入 Nacos 服务器。
-
重启 Spring Boot 应用。
Nacos 连接报错排查
如果项目启动时出现 Nacos 连接报错,可通过以下步骤排查:
- 检查 Bootstrap.properties 是否配置了 Nacos 配置信息。
- 检查 Nacos 服务器是否启动并正常运行。
- 检查 Nacos 服务器地址和端口是否正确。
- 检查防火墙是否阻止了通信。
常見問題解答
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