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

jam*_*zen 3 spring-boot spring-boot-actuator

我最近将一个项目从 Spring Boot 1.5.1 升级到 2.0.0,但我们的自定义执行器端点没有注册。我尝试了以下端点迁移指南(docs.spring.iogithub上,并spring.io)到我们的自定义端点迁移的新方法,但它不能正常工作。

这是我尝试注册的简化端点:

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

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

@Bean
public TimeEndpoint timeEndpoint() {
    return new TimeEndpoint();
}
Run Code Online (Sandbox Code Playgroud)

当我生成项目和启动,我把它注册/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)
Run Code Online (Sandbox Code Playgroud)

我什至尝试升级到 2.0.1,但这也无济于事。

我错过了什么?

Inn*_*nty 5

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

management:
  endpoints:
    web:
      exposure:
        include: 'health,info,metrics,customendpoint'
Run Code Online (Sandbox Code Playgroud)

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