有没有办法默认公开自定义执行器端点

Is there any way to by default expose custom actuator endpoints

今天,如果我想公开我的自定义执行器端点,我必须在 application.properties

中添加以下配置
management.endpoints.web.exposure.include=info,health,myAwesomeActuator
@Component
@Endpoint(id = "myAwesomeActuator")
public class MyAwesomeActuator {

    @ReadOperation
    public String test() {
        return "Hello, from MyAwesomeActuator";
    }
}

如果我不添加上面的配置 Spring 默认情况下启动仅公开 /health/info 端点

有什么方法可以将执行器标记为默认暴露?

这是出于安全考虑。一些端点可能太“脆弱”而无法在生产中暴露。

为了开发,可以通过放置

一次公开所有端点
management.endpoint.web.exposure.include=*

另一种选择是分析 属性 的值并在执行器实际启动之前“以编程方式”添加端点。 这里有很多可能的方法,具体取决于 spring 启动版本。

我发现 this SO thread 描述了这些选项。

一个有趣的选择是编写一个环境 post 处理器,它将分析 属性 并用您的自定义值覆盖,在那个 SO 线程中已经提到了这个选项。

可以查看有关如何在环境 post 处理器中使用属性的示例 here(再次来自该 SO 线程)