Inn*_*nty 3 java spring-boot spring-boot-actuator actuator
我正在尝试在 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)
Run Code Online (Sandbox Code Playgroud)
这三行是我得到的全部。我可以访问/actuator/health并/actuator/info没有任何问题,但不是我的自定义端点。我显然得到 404。
到目前为止我尝试过的:
management.endpoints.web.exposure.include=*我至少可以研究什么的任何想法?到目前为止,我发现的所有问题最终都没有意识到他们也需要@Component注释。
啊,顺便说一下,这是我的课:
@Component
@Endpoint(id = "hello")
public class HelloEndpoint {
@ReadOperation
public String sayHello() {
return "Hello!";
}
}
Run Code Online (Sandbox Code Playgroud)
发布问题后,我几乎立即找到了答案。这是配置中的拼写错误以及默认情况下实际上并未公开的事实的组合。尽管官方帖子说:
要配置端点,真正需要的只是将其公开为@Bean
这些是定义属性的正确方法:
management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.include='health,info,metrics,hello'
Run Code Online (Sandbox Code Playgroud)
或者作为 YAML:
management:
endpoints:
web:
exposure:
include: 'health,info,metrics,hello'
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
有趣的是,您不能再在端点名称中使用下划线。至少没有额外的变化。
| 归档时间: |
|
| 查看次数: |
4100 次 |
| 最近记录: |