404 Not Found异常处理

时间:2017-07-08 23:25:43

标签: spring spring-mvc spring-boot

我有一个控制器,如果没有给定名称的用户,将返回404 NOT FOUND。

@GetMapping(value = "/profile/{username}", produces = MediaType.APPLICATION_JSON_VALUE)
public HttpEntity<User> getUsers(@PathVariable("username") String username) {
    User user = userService.findOneByUsername(username);

    if(user != null) {
        return ResponseEntity.ok(user);
    }

    return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}

然后我创建了一个能够处理此异常的控制器

    @ControllerAdvice
    public class ExceptionHandlerController {

    @ExceptionHandler(NoHandlerFoundException.class)
    @ResponseStatus(value = HttpStatus.NOT_FOUND)
    public ModelAndView handleNotFound(NoHandlerFoundException e) {
        return new ModelAndView("redirect:/signIn");
    }
}

然而,它没有效果。控制器返回正常的默认404错误页面。它没有响应我的控制器。

编辑:我设置spring.mvc.throw-exception-if-no-handler-found = true,但这也没有帮助。我正在使用Spring Boot。

1 个答案:

答案 0 :(得分:0)

你没有在你的控制器中抛出NoHandlerFoundException。这样ControllerAdvice就不会运行了。