Spring boot 覆盖SpringCloud中的InfoEndpoint

Spring boot 覆盖SpringCloud中的InfoEndpoint,spring-boot,spring-cloud,Spring Boot,Spring Cloud,最初在GitHub中发布此问题,但可能更适合此论坛 我们正在为正在Eureka中注册的Spring云服务分配一些自定义元数据值,现在我们需要在Eureka仪表板中查看这些值。我正在尝试扩展/覆盖/info端点,以便从Eureka仪表板可以看到我们的元数据,该仪表板已提供指向每个注册服务的/info端点的超链接。我已经读到,我可以通过向上下文添加我自己版本的bean来覆盖引导自动配置的InfoEndpoint。我正在尝试使用以下配置bean进行测试: @Configuration public c

最初在GitHub中发布此问题,但可能更适合此论坛

我们正在为正在Eureka中注册的Spring云服务分配一些自定义元数据值,现在我们需要在Eureka仪表板中查看这些值。我正在尝试扩展/覆盖/info端点,以便从Eureka仪表板可以看到我们的元数据,该仪表板已提供指向每个注册服务的/info端点的超链接。我已经读到,我可以通过向上下文添加我自己版本的bean来覆盖引导自动配置的InfoEndpoint。我正在尝试使用以下配置bean进行测试:

@Configuration
public class EndpointConfig {
  @Bean
  public InfoEndpoint infoEndpoint() throws Exception {
    LinkedHashMap<String, Object> info = new LinkedHashMap<String, Object>();
    info.put("name", "value");
    return new InfoEndpoint(info);
  }
}
@配置
公共类EndpointConfig{
@豆子
公共InfoEndpoint InfoEndpoint()引发异常{
LinkedHashMap info=新建LinkedHashMap();
信息投入(“名称”、“价值”);
返回新的InfoEndpoint(info);
}
}
当我运行我的服务并点击它的/info端点时,我没有看到这个测试值。我在日志中也看到了这一点:

2015-04-17 14:54:23910主要信息DefaultListableBeanFactory----- 重写bean“infoEndpoint”的bean定义:替换[Root] bean:class[null];scope=;abstract=false;lazyInit=false; autowireMode=3;dependencyCheck=0;autowireCandidate=true; primary=false;factoryBeanName=endpointConfig; factoryMethodName=infoEndpoint;initMethodName=null; destroyMethodName=(推断);在类路径资源中定义 [com/acme/ecom/items/config/EndpointConfig.class]]和[Root bean: 类[null];作用域=;抽象=false;lazyInit=false;autowireMode=3; dependencyCheck=0;autowireCandidate=true;primary=false; factoryBeanName=org.springframework.cloud.autoconfigure.RefreshAutoConfiguration$InfoEndpointRebinderConfiguration; factoryMethodName=infoEndpoint;initMethodName=null; destroyMethodName=(推断);在类路径资源中定义 [org/springframework/cloud/autoconfigure/refreshtautoconfiguration$InfoEndpointRebinderConfiguration.class]]

似乎我的InfoEndpointBean版本正在被来自SpringCloud的另一个bean所取代(在
org/springframework/cloud/autoconfigure/RefreshAutoConfiguration$InfoEndpointRebinderConfiguration.class中)

我读对了吗?如果是这样,我该如何预防呢

谢谢,
Bill

如果您将元数据放入
info.*
例如
info.myfoo=${eureka.instance.metadataMap.myfoo:none}
它将显示在默认的/info端点中。

不知道这是否真的有帮助,但我在我的application.yml中有它,当我在服务上添加/info时可以看到它

info:
  component: Service Name
因此,当我使用/info点击服务时,我看到的是:-

{
"component": "Service Name"
}

希望这有帮助。

目前没有。我们可以让它可配置。谢谢!刚刚将其添加到SpringCloudCommonsRepo中。