【发布时间】:2021-07-11 11:27:01
【问题描述】:
我有一个使用 Spring Boot Actuator 的项目,它从 Spring Config Server 获取其配置。
上周,我将所有属性 yaml 移至 GitHub 上的 Config Repo。所以,目前,我的项目在src/main/resources/ 目录中只有bootstrap{-profile}.yml。
一切正常,除了/actuator/info 端点。我使用“变量”在运行时获取项目名称和版本,并且由于将此设置移动到 Config Repo,它并没有被解析为实际值,而是将字符串显示为值本身。
bootstrap.yml:
spring:
application:
name: 'foo'
profiles:
active: default
cloud:
config:
uri: http://localhost:8888
foo.yml,在 Config Repo 上:
server:
port: 8090
info:
app:
name: "@project.name@"
version: "@project.version@"
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8761/eureka
management:
endpoints:
web:
exposure:
include: '*'
这是/actuator/info的回复:
{
"app": {
"name": "@project.name@",
"version": "@project.version@"
}
}
这是预期的响应:
{
"app": {
"name": "foo",
"version": "0.0.1"
}
}
我怀疑配置服务器是罪魁祸首,所以我将info.app.* 属性移动到src/main/resources/ 中的本地application.yml 并且它已修复。所以它只发生在从配置服务器加载配置时。
我错过了什么吗?或者这是 Config Server 和 Actuator 的已知问题?我做了一些研究,但找不到根本原因,甚至没有找到与我有同样问题的人。
【问题讨论】:
标签: spring spring-boot spring-cloud spring-boot-actuator spring-cloud-config