Spring Boot Rest - 如何配置 404 - 找不到资源

作者:编程家 分类: spring 时间:2025-10-14

使用Spring Boot开发RESTful API时,一个常见的问题是如何处理404错误,即找不到资源的情况。在本文中,我们将探讨如何配置Spring Boot应用程序来处理404错误,并提供一个示例代码来说明这个过程。

配置Spring Boot处理404错误

要配置Spring Boot应用程序来处理404错误,我们可以使用@ControllerAdvice注解来定义一个全局的异常处理类。在这个类中,我们可以定义一个方法来处理NotFoundException异常,该异常表示找不到资源。

首先,我们需要创建一个自定义的NotFoundException异常类,如下所示:

java

public class NotFoundException extends RuntimeException {

public NotFoundException(String message) {

super(message);

}

}

接下来,我们可以创建一个全局的异常处理类,如下所示:

java

@ControllerAdvice

public class GlobalExceptionHandler {

@ExceptionHandler(NotFoundException.class)

@ResponseStatus(HttpStatus.NOT_FOUND)

public ResponseEntity handleNotFoundException(NotFoundException ex) {

return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());

}

}

在这个全局异常处理类中,我们使用@ExceptionHandler注解来指定处理NotFoundException异常的方法。该方法使用@ResponseStatus注解来指定返回的HTTP状态码为404,并通过ResponseEntity来返回异常信息。

示例代码

为了演示如何配置Spring Boot来处理404错误,我们可以创建一个简单的RESTful API,该API接收一个用户ID作为路径变量,并返回该用户的信息。如果找不到指定的用户ID,我们将抛出NotFoundException异常。

java

@RestController

@RequestMapping("/users")

public class UserController {

private Map users = new HashMap<>();

@GetMapping("/{id}")

public String getUser(@PathVariable int id) {

String user = users.get(id);

if (user == null) {

throw new NotFoundException("User not found");

}

return user;

}

}

在这个示例代码中,我们定义了一个UserController类,其中包含一个getUser()方法,该方法接收一个用户ID,并返回该用户的信息。如果找不到指定的用户ID,我们将抛出NotFoundException异常,并返回"User not found"的错误信息。

在本文中,我们讨论了如何配置Spring Boot应用程序来处理404错误,即找不到资源的情况。通过使用@ControllerAdvice注解和@ExceptionHandler注解,我们可以定义一个全局的异常处理类来处理NotFoundException异常,并返回适当的HTTP状态码和错误信息。通过示例代码,我们演示了如何在RESTful API中使用这些配置来处理404错误。希望本文对你理解Spring Boot中的404错误处理有所帮助。