自定义嵌套执行器端点

时间:2014-10-23 19:07:18

标签: spring spring-mvc spring-boot

使用Spring Boot 1.0,我能够按如下方式自定义执行器端点......

endpoints.beans.id=foo/springbeans

这将在/ foo / springbeans中公开spring beans端点。但是,在最新的Spring Boot中,由于 AbstractEndpoint 中的以下代码...

,这是不可能的。
@NotNull
@Pattern(regexp = "\\w+", message = "ID must only contains letters, numbers and '_'")
private String id;

我尝试使用下划线,但这只是在 / foo_springbeans 中公开了端点。这导致我尝试添加一个视图控制器,这样我至少可以重定向或转发到默认端点,但我也找不到一个简单的方法。如何配置端点或重定向?

2 个答案:

答案 0 :(得分:1)

在打开Spring Boot的问题并被告知按照Rafal的建议简单地移动整个管理上下文之后,我能够实现我想要的,尽管代码比我想要的多。我创建了一个自定义 MvcEndpoint ,如下所示......

@Named
public class MyCustomHealthCheck extends EndpointMvcAdapter {
    private HealthEndpoint delegate;

    @Inject
    public MyCustomHealthCheck(HealthEndpoint delegate) {
        super(delegate);
        this.delegate = delegate;
    }

    @ResponseBody
    @RequestMapping(value = "/springbeans", method = GET)
    public Health foo() {
        return delegate.invoke();
    }
}

上面的代码在HealthEndpoint映射到的路径下创建了/ springbeans路径,这对于我的用例来说已经足够了。如果我希望它映射到一个完全独立的路径,我需要创建一个虚拟端点并在此下面粘贴这个MvcEndpoint。

答案 1 :(得分:0)

对于Spring 1.x以下属性可以帮助您:

endpoints.beans.path: /foo/springbeans

您可以将它与任何标准端点一起使用,如果您想将其与扩展AbstractEndpoint的自定义端点一起使用,那么您需要额外的注释:

@ConfigurationProperties(prefix = "endpoints.customEndpoint")

然后使用property:

endpoints.customEndpoint.path:/ custom / endpoint