Как игнорировать @ExceptionHandler из зависимости? - PullRequest
0 голосов
/ 04 февраля 2019

У меня возникла проблема при попытке вернуть « ResponseEntity » в одном из моих методов, который находится в пользовательском обработчике исключений (с комментариями @ ExceptionHandler и @ ControllerAdvice ), я вызываю этот метод из "doOnError" (rxjava), но моя проблема в том, что когда я делаю это, вызывается не только мой метод, но и другой @ ExceptionHandler в @ ControllerAdvice вызывается аннотированный класс, но этот класс отсутствует в моем проекте, входит в одну из моих зависимостей .. поэтому, чтобы прояснить мою проблему:

Я пытаюсь обработать каждыйисключения в моем проекте возвращают ResponseEntity, но когда я делаю это на моем @ ExceptionHandler внутри моего @ ControllerAdvice , другой, расположенный в моих зависимостях, вызывается после моего пользовательского, поэтому ответобъект, который я построил, никогда не возвращается, он просто возвращает созданную зависимостью @ExceptionHandler.

Мой вопрос есть, есть способ избежатьИдентификатор вызова обработчика исключений зависимости?

Примечания :

  • @ ExceptionHandler используется для метода внутри исключениякласс обработчика, этот последний аннотирован @ControllerAdvice.
  • Я пробовал с аннотациями Order и Priority, но они не работали для меня.

Ответы [ 2 ]

0 голосов
/ 22 марта 2019

Я решил свою проблему.Я попытался использовать решение @ComponentScan, предложенное Жоао, и оно у меня не сработало, потому что обработчик исключений, расположенный в моих зависимостях, не помечен как компонент ... поэтому я снова начал исследовать и выяснил, что при добавленииДругой параметр метода handleException в моем обработчике исключений (который отмечен как @ExceptionHandler) не работает, потому что я удалил второй параметр (у меня был только «throwable»), и он начал работать!Поэтому в резюме я добавил аннотацию ..

@Order(Ordered.HIGHEST_PRECEDENCE)

.. в свой класс обработчика исключений и поместил только один параметр (исключение) в аннотированный метод @ExceptionHandler, который будет извлекать "ResponseEntity" , что мне нужно.

0 голосов
/ 04 февраля 2019

Вы можете запретить загрузку классов, используя @ComponentScan из Spring (https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/ComponentScan.html#excludeFilters).

. Вы можете создать собственный фильтр исключения для этого конкретного ExceptionHandler класса, определить пакеты, которые вы хотите исключить (может оказаться невозможным в зависимости от пакета, в котором определен обработчик) или даже определить определенные классы для исключения.

...