#spring-boot #exception
#весенняя загрузка #исключение
Вопрос:
Я пытаюсь создать модуль обработки исключений, который мог бы использоваться несколькими модулями. Итак, я создаю jar, в котором есть вся логика, связанная с обработкой исключения. Я пытаюсь добавить рекомендации глобального контроллера, которые могли бы перехватывать исключения и генерировать ответ об ошибке.Проблема в том, что этот совет контроллера не вызывается. Он отлично работает, когда я пишу объявление этого совета контроллера в отдельных модулях.
Модуль обработки исключений —основной модуль ExceptionToResponseGenerator —RestController Это не работает
Модуль обработки исключений
MainModule —RestController —ExceptionToResponseGenerator Это работает
Что я делаю не так?
package com.abc.cde.exceptionhandler.handler;
@ControllerAdvice
@Log
public class ExceptionToResponseGenerator extends ResponseEntityExceptionHandler {
@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders httpHeaders, HttpStatus httpStatus, WebRequest webRequest) {
return new ResponseEntity(new ErrorDetails(new Date(), "bad", "bad"), HttpStatus.BAD_REQUEST);
}
Основной класс
@Import(IncludeExceptionHandling.class)
@SpringBootApplication
public class MainApplication{
public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
}
}
-----------
IncludeExceptionHandling
@Configuration
@EnableAspectJAutoProxy
public class IncludeExceptionHandling {
@Bean
public ExceptionLoggerPointcut notifyAspect() {
return new ExceptionLoggerPointcut();
}
}
ExceptionLoggerPointcut — это исключение, обертывающее aop и повторно перемещающее его
Комментарии:
1. Отправьте код с именами пакетов, включая имя пакета вашего основного класса, помеченное
@SpringBootApplication
2. @Strelok отредактировал мой пост
3. Вы не опубликовали пакет вашего основного класса. ExceptionToResponseGenerator должен находиться в подпакете пакета, в котором расположен класс MainApplication, иначе он не будет автоматически сканироваться.
4. Привет, я пытаюсь добиться того же, пожалуйста, дайте мне знать, если кто-то решил эту проблему
Ответ №1:
Похоже, проблема в отсутствии @ComponentScan. Пожалуйста, передайте имя пакета вашего кода и имя внешней библиотеки jar в аннотацию @ComponentScan, чтобы Spring мог зарегистрировать компоненты и сделать их доступными для вашего приложения.