2016-08-03 18 views
7

Tworzę API z Spring Boot, więc chcę wyłączyć mapowanie /error.Spring Boot Disable/mapowanie błędów

mam ustawić następujące rekwizyty w application.properties:

server.error.whitelabel.enabled=false 
spring.mvc.throw-exception-if-no-handler-found=true 
spring.resources.add-mappings=false 

Jednak kiedy uderzę /error uzyskać:

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"} 

wymaganego rezultatu

HTTP/1.1 404 Internal Server Error 
Server: Apache-Coyote/1.1 

Odpowiedz

15

Można wyłącz ErrorMvcAutoConfiguration:

@SpringBootApplication 
@EnableAutoConfiguration(exclude = {ErrorMvcAutoConfiguration.class}) 
public class SpringBootLauncher { 

lub poprzez Wiosna osłonowego application.yml/properties:

spring.autoconfigure.exclude: org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration 

jeśli nie jest to opcja dla Ciebie, można również rozszerzyć ErrorController Wiosny z własnej realizacji:

@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

Tak, zrobiłem dokładnie to, co jest denerwujące! Zastanawiam się, czy istnieje sposób na usunięcie wiązania bez robienia tego – ptimson

+0

Same, jeśli usunąłem wszystkie błędy są teraz html zamiast json ... – TheBakker

0

W moim przypadku problem dotyczył zasobów sieciowych, do których odwołuję się w nagłówku strony logowania. W szczególności css był przywoływany w nagłówku, ale w rzeczywistości nie istniał w projekcie.

Co może być pomocne, w mojej implementacji WebSecurityConfigurerAdapter najpierw skomentowałem ciało configure(WebSecurity web), a następnie próbując się zalogować, zamiast wyświetlać powyższy błąd, mój pasek adresu przeglądarki wyświetli adres URL zasobu powodującego problem .