У меня проблема с возвратом "ResponseEntity" в одном из моих методов, который находится в пользовательском обработчике исключений (с аннотациями @ExceptionHandler и @КонтроллерСовет), я вызываю этот метод из "doOnError" (rxjava), но моя проблема в том, что когда я это делаю, вызывается не только мой метод, но и другой @ExceptionHandler в аннотированном классе @КонтроллерСовет, но этот класс не находится в моем проекте, находится в одной из моих зависимостей.. Итак, чтобы прояснить мою проблему:
Я пытаюсь обработать все исключения в моем проекте, возвращая ResponseEntity, но когда я делаю это на моем @ExceptionHandler внутри моего @КонтроллерСовет, другое, расположенное в моих зависимостях, вызывается после моего пользовательского, поэтому объект ответа, который я построил, никогда не возвращается, он просто возвращает созданный зависимостью @ExceptionHandler.
Мой вопрос, есть ли способ избежать вызова обработчика исключений зависимостей?
Примечания:




Вы можете запретить загрузку классов с помощью @ComponentScan из Spring (https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/ComponentScan.html#excludeFilters).
Вы можете либо создать собственный фильтр исключения для этого конкретного класса ExceptionHandler, определить пакеты, которые вы хотите исключить (это может быть невозможно в зависимости от пакета, в котором определен обработчик), либо даже определить определенные классы для исключения.
Да, безусловно. Попробуйте создать собственный фильтр @ComponentScan(excludeFilters = @Filter(type = CUSTOM, classes = ExcludingThirdPartyControllerAdvice.class)). Этот класс фильтра должен реализовывать TypeFilter, и, предполагая, что ваш сторонний совет сканируется, вы можете вернуть true из фильтра при загрузке компонента, чтобы предотвратить его выполнение.
Я решил свою проблему. Я попытался использовать решение @ComponentScan, предложенное Жоао, и оно не сработало для меня, потому что обработчик исключений, расположенный в моих зависимостях, не аннотирован как компонент... поэтому я снова начал исследовать и понял, что когда я добавляю еще один параметр в метод "handleException" в моем обработчике исключений (который аннотирован как @ExceptionHandler) не работает, потому что я удалил второй параметр (у меня был только "throwable") и он начал работать! Поэтому в резюме я добавил ..
@Order(Ordered.HIGHEST_PRECEDENCE)
..annotation к моему классу обработчика исключений и поместить только один параметр (исключение) в аннотированный метод @ExceptionHandler, который извлечет нужный мне "ОткликЭнтити".
@OmidRostami Вы пробовали подход к ответу Жоао?
Знаете ли вы, можно ли добавить «excludeFilters» в @ComponentScan, чтобы исключить пакет внешней библиотеки?