В настоящее время я работаю с различными службами, разделенными на разные проекты в Spring Boot.
Я создал обработчик ошибок, который будет JAR для всех проектов, поэтому, когда у меня есть
com.my.package
во всех проектах обработчик ошибок работает нормально.
com.my.package.Controller
com.my.package.Entity
...
Мой исключительный ответ:
"code": 400,
"message": "'id' must be java.lang.Integer",
"status": "BAD_REQUEST"
}
Но проблема в том, что у меня
com.my.package.p1
-> для проекта p1
com.my.package.p2
-> для проекта p2
com.my.package.p1.Controller
com.my.package.p1.Entity
...
com.my.package.p2.Controller
com.my.package.p2.Entity
...
кажется, что обработчик ошибок в работе завершен, а обработчик по умолчанию разрешает ошибку,а не мои.
{
"timestamp": "2019-09-30T23:58:57.379+0000",
"status": 400,
"error": "Bad Request",
"message": "Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested exception is java.lang.NumberFormatException: For input string: \"j\"",
"path": "/api/department/j"
}
Это мои классы из моего JAR
//@RestControllerAdvice(basePackages = "com.my.package")
@ControllerAdvice
public class GlobalControllerExceptionHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
//405
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
@ResponseStatus(HttpStatus.METHOD_NOT_ALLOWED)
protected GlobalException processMethodNotSupportedException(final HttpRequestMethodNotSupportedException ex) {
LOGGER.error("Method not allowed");
return new GlobalException(405, "Method not allowed",HttpStatus.METHOD_NOT_ALLOWED);
}
...
Как видите, я пытался использовать @RestControllerAdvice и @ControllerAdvice и пытался использовать аннотацию basePackages но не было успешного результата.
Я также сделал другой класс:
@Configuration
@ComponentScan("com.my.package")
@EntityScan("com.my.package")
public class SharedBeanReference {
}
Но тот же результат.
Может кто-нибудь помочь мне выяснить, что этопроисходит?