我最近将一个项目从Spring Boot 1.5.1升级到2.0.0,我们的自定义执行器端点没有注册。我已尝试使用以下端点迁移指南(docs.spring.io,github和spring.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,但这也没有帮助。
我错过了什么?
答案 0 :(得分:3)
我相信,Sharan De Silva的回答并不正确。我只花了几个小时处理同一个问题,因为属性名称不同。应该是:
\d{0,2}
答案 1 :(得分:0)
您需要通过将自定义端点添加到 application.yml
文件中来公开自定义端点。
management:
endpoints:
web:
expose: 'customendpoint,info,health'
exclude: env
如果要公开所有端点,请将其更改为expose: '*'
答案 2 :(得分:0)
management.endpoints.web.exposure.include = {ENDPOINT-NAME}