Spring Загрузка Отключить/отобразить ошибки
Я создаю API с Spring Boot, поэтому хочу отключить отображение /error
.
Я установил следующие реквизиты в application.properties:
server.error.whitelabel.enabled=false
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
Однако, когда я нажимаю /error
, я получаю:
HTTP/1.1 500 Internal Server Error
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Wed, 03 Aug 2016 15:15:31 GMT
Connection: close
{"timestamp":1470237331487,"status":999,"error":"None","message":"No message available"}
Необходимый результат
HTTP/1.1 404 Internal Server Error
Server: Apache-Coyote/1.1
Ответы
Ответ 1
Вы можете отключить ErrorMvcAutoConfiguration:
@SpringBootApplication
@EnableAutoConfiguration(exclude = {ErrorMvcAutoConfiguration.class})
public class SpringBootLauncher {
Или через приложение Spring Boot application.yml/properties:
spring.autoconfigure.exclude: org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration
Если это не вариант для вас, вы также можете расширить Spring ErrorController своей собственной реализацией:
@RestController
public class MyErrorController implements ErrorController {
private static final String ERROR_MAPPING = "/error";
@RequestMapping(value = ERROR_MAPPING)
public ResponseEntity<String> error() {
return new ResponseEntity<String>(HttpStatus.NOT_FOUND);
}
@Override
public String getErrorPath() {
return ERROR_MAPPING;
}
Примечание. Используйте один из вышеперечисленных методов (отключите автоматическую настройку или внедрите контроллер ошибок). Оба вместе не будут работать, как указано в комментариях.
Ответ 2
В моем случае проблема была связана с веб-ресурсами, указанными в заголовке страницы входа. В частности, css ссылался в заголовке, но фактически не существовал в проекте.
Что также может быть полезно, в моей реализации WebSecurityConfigurerAdapter
я сначала прокомментировал тело configure(WebSecurity web)
, а затем, пытаясь войти в систему, вместо того, чтобы отображать приведенную выше ошибку json, в моей адресной строке браузера будет отображаться URL-адрес ресурса вызывая проблему.
Ответ 3
Атрибуты должны быть указаны через @SpringBootApplication. Пример в Котлине:
@SpringBootApplication(exclude = [ErrorMvcAutoConfiguration::class])
class SpringBootLauncher {