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

Spring boot Spring Boot 2.0未注册自定义执行器端点,spring-boot,spring-boot-actuator,Spring Boot,Spring Boot Actuator,我最近将一个项目从Spring Boot 1.5.1升级到2.0.0,我们的定制执行器端点没有注册。我尝试了以下端点迁移指南(、和)来使用新方法迁移我们的自定义端点,但它不起作用 下面是我试图注册的一个简化端点: @Component @Endpoint(id = "time") public class TimeEndpoint { @ReadOperation public Map<String, Object> getTimeInfo() { r

我最近将一个项目从Spring Boot 1.5.1升级到2.0.0,我们的定制执行器端点没有注册。我尝试了以下端点迁移指南(、和)来使用新方法迁移我们的自定义端点,但它不起作用

下面是我试图注册的一个简化端点:

@Component
@Endpoint(id = "time")
public class TimeEndpoint {
    @ReadOperation
    public Map<String, Object> getTimeInfo() {
        return new HashMap<String, Object>() {{
            put("time", DateTime.now(UTC));
        }};
    }
}
当我构建项目并启动时,我看到它注册了
/health
/info
/exactor
端点,但没有注册我的
/time
端点。尝试转到
/time
/exactor/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)
WebMvcEndpointHandlerMapping-将“{[/actuator/health],methods=[GET],products=[application/vnd.spring boot.actuator.v2+json | | application/json]}”映射到公共java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handler上(javax.servlet.http.HttpServletRequest,java.util.Map)
WebMvcEndpointHandlerMapping-将“{[/actuator/info],methods=[GET],products=[application/vnd.spring boot.actuator.v2+json | | application/json]}”映射到公共java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map)
WebMvcEndpointHandlerMapping-将“{[/actuator],methods=[GET],products=[application/vnd.spring boot.actuator.v2+json | | | application/json]}”映射到受保护的java.util.Map org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping.links(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
我甚至尝试升级到2.0.1,但也没用


我遗漏了什么?

您需要将自定义端点添加到您的
应用程序.yml
文件中,以公开自定义端点

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

如果要公开所有端点,请将其更改为“*”

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

management:
  endpoints:
    web:
      exposure:
        include: 'health,info,metrics,customendpoint'

这里是官方参考:

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

谢谢你的帮助。我希望在文档和示例中更清楚一点。这是我的最后一个
应用程序。属性
:management.endpoints.enabled by default=false management.endpoints.web.exposure.include=health,info,time management.endpoint.health.enabled=true management.endpoint.info.enabled=true management.endpoints.web.base path=/management.health.defaults.enabled=false
management:
  endpoints:
    web:
      exposure:
        include: 'health,info,metrics,customendpoint'