做你想做的事情的一种方法(如果你有完全自定义的属性需要显示)是声明一个 InfoEndpoint 类型的 bean,它将覆盖默认值。
@Bean
public InfoEndpoint infoEndpoint() {
final LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>();
map.put("test", "value"); //put whatever other values you need here
return new InfoEndpoint(map);
}
从上面的代码可以看出,地图可以包含您需要的任何信息。
如果您要显示的数据可以由环境检索并且不是自定义的,则不需要覆盖InfoEndpoint bean,但您可以简单地将属性添加到属性文件中,前缀为info。评估操作系统名称的一个示例如下:
info.os = ${os.name}
在上面的代码中,Spring Boot 将在返回 /info 端点中的属性之前评估右手表达式。
最后一点是,/env 端点中已有大量环境信息
更新
正如@shabinjo 所指出的,在较新的 Spring Boot 版本中,没有接受映射的 InfoEndpoint 构造函数。
但是,您可以使用以下 sn-p:
@Bean
public InfoEndpoint infoEndpoint() {
final Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("test", "value"); //put whatever other values you need here
return new InfoEndpoint(new MapInfoContributor(map));
}
上面的代码将完全覆盖/info 中的默认信息。
为了克服这个问题,可以添加以下 bean
@Bean
public MapInfoContributor mapInfoContributor() {
return new MapInfoContributor(new HashMap<String, Object>() {{
put("test", "value");
}});
}