Аннотация @ControllerAdvice не работает без аннотации @RestControllerJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Аннотация @ControllerAdvice не работает без аннотации @RestController

Сообщение Anonymous »

RESOLVE

в приложении rest API тип возвращаемого значения метода обработки исключений должен быть ResponseEntity или аннотировать метод с помощью @ResponseBody, чтобы Spring Boot мог выполнить сериализацию HTTP.

ОБНОВЛЕНИЕ

стартовый класс:

Код: Выделить всё

@SpringBootApplication
@ComponentScan
@EnableAutoConfiguration
@EnableConfigurationProperties
@EnableTransactionManagement//TODO remove this line if not needed
public class Application extends SpringBootServletInitializer{

private static Class applicationClass= Application.class;
public static void main(String[] args) {
SpringApplication.run(applicationClass, args);
}

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(applicationClass);
}
}
< /code>

Я использовал @controlleradvice < /code> для обработки глобальной обработки исключений в панели Spring Boot Starter Web. Я получил такую ​​странную проблему. < /p>

, как я следовал руководству из весеннего официального документа, https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc, для обработки исключений во всем мире, просто добавьте класс обработчика с @controlleradivce 
аннотирован. Но, когда я тестирую его, метод обработки исключений не вызывается, когда runtimeexception . />

Код: Выделить всё

@ControllerAdvice
public class GlobalDefaultExceptionHandler {

@ExceptionHandler(value = RuntimeException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public RestEntity handleException(HttpServletRequest req, RuntimeException ex) {
RestEntity restEntity=new RestEntity();
Message message=new Message();
message.setCode(1000);
message.setMessage("Something wrong with the server");
restEntity.setMessage(message);
return restEntity;
}
}
, и у меня есть методы в других контроллерах, аннотированных с @exceptionhandler , чтобы обрабатывать конкретные исключения в каждом контроллере, в то время как оставьте нерешенные исключения из Globaldefaulxectionhacthresshandler . < /p>

Оказывается, что это не работает. Я что -то упускаю здесь? работать нормально. Я не почему ... < /p>

Кто -нибудь может помочь? < /P>

Подробнее здесь: https://stackoverflow.com/questions/303 ... out-having
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»