Я пытаюсь добавить пользовательскую конечную точку привода в приложение Spring Boot 2.0.2.RELEASE. Я подписан на официальный рекомендации, официальное руководство по миграции, а также этот пост.
Я могу настроить все через свойства: скрыть/показать конечные точки, изменить базовый путь и т. д. Все работает, за исключением того, что мой пользовательский компонент конечной точки не подхватывается 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, очевидно.
Что я пробовал до сих пор:
- Проверено, что мой класс конечной точки зарегистрирован в контексте как компонент.
- Выставил это явно через конфигурацию yaml.
- Выложил все через
management.endpoints.web.exposure.include=*
- Полностью удалены все настройки управления, потому что они должны быть доступны по умолчанию.
- Трижды проверил идентификатор конечной точки.
- Идентификатор конечной точки переименован.
Любые идеи о том, что я могу хотя бы изучить? Все вопросы, которые я нашел до сих пор, заканчиваются лично, не понимая, что им тоже нужна аннотация @Component
.
Ах, вот мой класс, кстати:
@Component
@Endpoint(id = "hello")
public class HelloEndpoint {
@ReadOperation
public String sayHello() {
return "Hello!";
}
}