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