Spring Boot 2.0未注册自定义执行器端点

时间:2018-04-06 20:49:06

标签: spring-boot spring-boot-actuator

我最近将一个项目从Spring Boot 1.5.1升级到2.0.0,我们的自定义执行器端点没有注册。我已尝试使用以下端点迁移指南(docs.spring.iogithubspring.io)来使用新方法迁移我们的自定义端点,但它无法正常工作。< / p>

以下是我尝试注册的简化终端:

@Component
@Endpoint(id = "time")
public class TimeEndpoint {
    @ReadOperation
    public Map<String, Object> getTimeInfo() {
        return new HashMap<String, Object>() {{
            put("time", DateTime.now(UTC));
        }};
    }
}

我甚至尝试从类中删除@Component并将其注册为主@Configuration类中的bean,如下所示:

@Bean
public TimeEndpoint timeEndpoint() {
    return new TimeEndpoint();
}

当我构建项目并启动时,我看到它注册了/health/info/actuator端点,而不是我的/time端点。尝试转到/time/actuator/time会产生404。

WebMvcEndpointHandlerMapping - Mapped "{[/actuator/health],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)
WebMvcEndpointHandlerMapping - Mapped "{[/actuator/info],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)
WebMvcEndpointHandlerMapping - Mapped "{[/actuator],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto protected java.util.Map<java.lang.String, java.util.Map<java.lang.String, org.springframework.boot.actuate.endpoint.web.Link>> org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping.links(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)

我甚至尝试升级到2.0.1,但这也没有帮助。

我错过了什么?

3 个答案:

答案 0 :(得分:3)

我相信,Sharan De Silva的回答并不正确。我只花了几个小时处理同一个问题,因为属性名称不同。应该是:

\d{0,2}

以下是官方参考:https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html#production-ready-endpoints-exposing-endpoints

答案 1 :(得分:0)

您需要通过将自定义端点添加到 application.yml 文件中来公开自定义端点。

management:
  endpoints:
    web:
      expose: 'customendpoint,info,health'
      exclude: env

如果要公开所有端点,请将其更改为expose: '*'

答案 2 :(得分:0)

management.endpoints.web.exposure.include = {ENDPOINT-NAME}