Spring: проверьте, используется ли аннотация, но компонент отсутствует.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring: проверьте, используется ли аннотация, но компонент отсутствует.

Сообщение Anonymous »

У меня есть самодельная аннотация (назовем ее @A), которую можно использовать в RequestMappings для работы с некоторым OncePerRequestFilter (здесь он называется MyFilter).Я выполнил автоконфигурацию для условного создания компонента MyFilter, и теперь хочу выполнить следующую проверку: если @A используется хотя бы в одном из моих запросить сопоставления, выдать ошибку, если экземпляр MyFilter недоступен.
Я попробовал:
  • использование проверки Jakarta с помощью метода внутри автоконфигурации с @Validated и без него/ для метода и/или автоконфигурации:

    Код: Выделить всё

    @AssertTrue(message = "Annotation A may not be used, no instance of MyFilter was provided")
    private boolean isFilterAvailableIfAnnotationIsUsed(RequestMappingHandlerMapping requestMappingHandlerMapping, Optional myFilter) {
    if (myFilter.isEmpty()) {
    for (HandlerMethod handlerMethod : requestMappingHandlerMapping.getHandlerMethods().values()) {
    if (handlerMethod.hasMethodAnnotation(A.class)) {
    return false;
    }
    }
    }
    
    return true;
    }
    
  • просматриваем @PostConstruct, но он не принимает bean-компоненты в качестве аргументов
  • проверяем BeanPostProcessor , но я не уверен, что смогу использовать его таким образом.
Теперь у меня осталась единственная идея — создать фиктивный компонент, который зависит от RequestMappingHandlerMapping и Необязательный, и цель которого — просто создать исключение, если условия удовлетворены.
Есть ли чистый способ выполнить что-то подобное?

Подробнее здесь: https://stackoverflow.com/questions/792 ... ot-present
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»