Spring Boot 2 пользовательских конечных точек привода

Весна Нуб: ОК. Я начинаю с STS Spring Starter Project / Maven / Java 8 / Spring Boot 2.0 и выбираю зависимости Web и Actuator. Он прекрасно работает и работает и отвечает на http://localhost:8080/actuator/health. Я добавляю "Конечную точку" к основному классу приложения, чтобы она выглядела следующим образом.

package com.thumbsup;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.boot.actuate.endpoint.annotation.Selector;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class YourStash11Application {

    public static void main(String[] args) {
        SpringApplication.run(YourStash11Application.class, args);
    }

    @Endpoint(id="mypoint")
    public class CustomPoint {
        @ReadOperation
        public String getHello(){
            return "Hello" ;
        }
    }

}

Я пытаюсь включить все в application.properties:

management.endpoints.enabled-by-default=true
management.endpoint.conditions.enabled=true
management.endpoint.mypoint.enabled=true
management.endpoints.web.exposure.include=*

Но когда он собирается, нет ссылки на отображение / привод /mypoint, и
http://localhost:8080/actuator/mypoint и
HTTP: // локальный: 8080 / приложение / MyPoint
оба возвращают 404 ошибки.

Что мне не хватает? Спасибо!

3 ответа

ОК, решил:

    @Endpoint(id="mypoint")
    @Component
    public class myPointEndPoint {
        @ReadOperation
        public String mypoint(){
            return "Hello" ;
        }
    }

Чего не хватало, так это аннотации @Component. Но где это в документах?

Может быть, это кому-нибудь поможет.

Похоже @ReadOperation не поддерживает тип возврата Void, Вы должны вернуть хотя бы пустую строку на ваш invoke метод.

spring-boot 2.0.3.RELEASE

@Component
@Endpoint(id = "heartbeat")
public class HeartbeatEndpoint {

    @ReadOperation
    public String invoke() {
        return "";
    }
}

Первоначально частично проблема заключалась в том, что код не добавил конечную точку без "селектора"

Источник

@Endpoint(id = "loggers")
@Component
public class LoggersEndpoint {

    @ReadOperation
    public Map<String, Object> loggers() { ... }

    @ReadOperation
    public LoggerLevels loggerLevels(@Selector String name) { ... }

    @WriteOperation
    public void configureLogLevel(@Selector String name, LogLevel configuredLevel) { ... }

}

Эта конечная точка предоставляет три операции:

GET on / application / loggers: конфигурация всех регистраторов (так как она не имеет параметра "селектор"):

GET on / application / loggers / {name}: конфигурация именованного регистратора (используя имя @Selector).

...

Отредактированный вопрос привел к выводу, что это должен быть боб

Если вы добавляете @Bean, аннотированный с помощью @Endpoint, любые методы, аннотированные с помощью @ReadOperation, @WriteOperation или @DeleteOperation, автоматически отображаются через JMX и, в веб-приложении, также через HTTP. Конечные точки могут быть открыты через HTTP с использованием Jersey, Spring MVC или Spring WebFlux.

Или посмотрите комментарии в объявлении о функции

Другие вопросы по тегам