programing

스프링 부트 비활성화/오류 매핑

newsource 2023. 4. 5. 21:59

스프링 부트 비활성화/오류 매핑

Spring Boot을 사용하여 API를 만들고 있으니/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

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의 Error Controller를 자체 구현으로 확장할 수도 있습니다.

@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;
    }

주의: 위의 방법 중 하나를 사용합니다(자동 설정을 무효로 하거나 에러 컨트롤러를 실장합니다).댓글에 기재되어 있는 바와 같이 둘 다 동작하지 않습니다.

속성은 @SpringBootApplication을 통해 지정해야 합니다.Kotlin의 예:

@SpringBootApplication(exclude = [ErrorMvcAutoConfiguration::class])
class SpringBootLauncher {

제 경우 로그인 페이지 헤더에 참조된 웹 리소스에 문제가 있었습니다.구체적으로 css는 헤더에서 참조되었지만 실제로는 프로젝트에 존재하지 않았습니다.

도움이 될 만한 게 뭐가 있을까요?WebSecurityConfigurerAdapter본문에 코멘트한 실장configure(WebSecurity web)먼저 로그인을 시도하면 위의 오류를 표시하는 대신 브라우저의 주소 표시줄에 문제의 원인이 되는 리소스에 대한 URL이 표시됩니다.

언급URL : https://stackoverflow.com/questions/38747548/spring-boot-disable-error-mapping