У меня есть собственный класс Spring Boot AutoConfiguration
, в котором я создаю @RequestScop
ed компонент пользовательского класса - Foo
. В том же классе AutoConfiguration
я создаю компонент моего глобального обработчика исключений - @ControllerAdvice
. Все эти классы упакованы как jar и используются в качестве зависимости в моем другом веб-приложении Spring Boot. Всякий раз, когда в методе контроллера возникает исключение, соответствующий обработчик исключений вызывается в моем глобальном обработчике исключений, за исключением случаев, когда в Foo
возникает исключение, выдается BeanCreationException
, и ни один из глобальных обработчиков исключений не вызывается. Я попытался добавить @Order(Ordered.HIGHEST_PRECEDENCE)
, как предложено в некоторых ответах SO, но ни один из них не сработал. Можно ли обрабатывать такие исключения bean-объекта в области запросов в глобальном обработчике исключений - a @ControllerAdvice
? Очень признателен.
РЕДАКТИРОВАТЬ Это мой AutoConfiguration
класс. (Это в другой банке)
@Configuration
@ConditionalOnClass({FooContext.class, MyGlobalExceptionHandler.class})
public class AutoConfiguration {
// This bean is used in a Controller
@Order
@RequestScope
@Bean
@ConditionalOnMissingBean(FooContext.class)
public FooContext fooContext() throws IOException {
// generateFooContext() throws the exception and Spring wraps it with BeanCreationException.
return FooContextFactory.generateFooContext();
}
@Bean
@ConditionalOnMissingBean
public MyGlobalExceptionHandler globalExceptionHandler(MyErrorHelper errorHelper) {
return new MyGlobalExceptionHandler (errorHelper);
}
}
Это MyGlobalExceptionHandler
(Это в другой банке)
@ControllerAdvice
@RefreshScope
@Order(Ordered.HIGHEST_PRECEDENCE)
public class MyGlobalExceptionHandler {
// Never invoked
@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResponse> render(Exception ex) {
log.error("Exception occurred: ", ex);
return errorHelper.throwErrorException(DEFAULT_ERROR_CODE, HttpStatus.INTERNAL_SERVER_ERROR);
}
/// ...
}