스프링 @MVC 예외 처리 방법
- @ControllerAdvice
- @ExceptionHandler
스프링 부트가 제공하는 기본 예외 처리기
- BasicErrorController
- HTML과 JSON 응답 지원
- 커스터마이징 방법
- ErrorController 구현
커스텀 에러 페이지
- 상태 코드 값에 따라 에러 페이지 보여주기
- src/main/resources/static|template/error/
- 404.html
- 5xx.html
- ErrorViewResolver 구현
예제
public class AppError {
private String message;
private String resaon;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getResaon() {
return resaon;
}
public void setResaon(String resaon) {
this.resaon = resaon;
}
}
@Controller
public class Samplecontroller {
@GetMapping("/hello")
public String hello() {
throw new SampleException();
}
@ExceptionHandler(SampleException.class)
public @ResponseBody AppError sampleError(SampleException e) {
AppError appError = new AppError();
appError.setMessage("error.app.key");
appError.setResaon("IDK IDK IDK");
return appError;
}
}
public class SampleException extends RuntimeException {
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>404</h1>
</body>
</html>