Почему класс @Configuration необходим для аннотации @ConditionalOnEnabledEndpoint? - PullRequest
0 голосов
/ 02 ноября 2019

Я использую версию Spring Boot 2.1.6. Разве мы не можем использовать аннотацию @ConditionalOnEnabledEndpoint с @Component? Я получаю

Caused by: java.lang.IllegalStateException: OnEnabledEndpointCondition must be be used on @Bean methods when the endpoint is not specified

Я пробовал класс как ниже

@Component
@Endpoint(id="customendpoint")
@ConditionalOnEnabledEndpoint
class MyCustomEndpoint {
      @ReadOperation
      public String method1() { ....... }          
}

@ConditionalOnEnabledEndpoint работает, когда я создаю класс конфигурации и метод @Bean.

ПочемуКласс конфигурации требуется? Есть ли какой-либо другой способ остановить компонент, выставляющий конечную точку привода без класса конфигурации.

1 Ответ

1 голос
/ 02 ноября 2019

Необходимо установить атрибут endpoint, см. ConditionalOnEnabledEndpoint#endpoint

public abstract Class<?> endpoint

Тип конечной точки, который необходимо проверить. Предполагается, что тип возвращаемого значения метода @Bean: Endpoint или EndpointExtension.

Возвращает: тип конечной точки для проверки

С тех пор: 2.0.6

По умолчанию: java.lang.Void.class

Ваш измененный код:

@Component
@Endpoint(id="customendpoint")
@ConditionalOnEnabledEndpoint(endpoint = MyCustomEndpoint.class)
class MyCustomEndpoint {
    @ReadOperation
    public String method1() { ....... }          
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...