弹簧启动禁用/错误映射

2022-09-01 09:33:05

我正在使用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

答案 1

您可以禁用 ErrorMvcAutoConfiguration :

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

或者通过Spring Boot的应用程序.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

应通过@SpringBootApplication指定属性。Kotlin 中的示例:

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

推荐