我正在尝试在 Spring Boot 2.0.2.RELEASE 应用程序中添加自定义执行器端点。我正在遵循官方指南、官方迁移指南以及这篇文章。
我可以通过属性配置所有内容:隐藏/公开端点、更改基本路径等。一切正常,除了我的自定义端点 bean 没有被WebMvcEndpointHandlerMapping
. 它根本没有出现在这些著名的日志行中:
EndpointLinksResolver : Exposing 2 endpoint(s) beneath base path '/actuator'
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)
这三行是我得到的全部。我可以毫无问题地访问,但不能访问我的自定义端点/actuator/health
。/actuator/info
我显然得到404。
到目前为止我尝试了什么:
- 检查我的端点类是否在上下文中注册为 bean。
- 通过 yaml 配置显式公开它。
- 通过暴露一切
management.endpoints.web.exposure.include=*
- 完全删除了所有管理配置,因为默认情况下它应该是可用的。
- 三重检查了端点 ID。
- 重命名端点 ID。
关于我至少可以研究什么的任何想法?到目前为止,我发现的所有问题最终都没有意识到他们也需要@Component
注释。
啊,顺便说一下,这是我的课:
@Component
@Endpoint(id = "hello")
public class HelloEndpoint {
@ReadOperation
public String sayHello() {
return "Hello!";
}
}