스프링 부트 애플리케이션에는 기본적으로 에러 핸들러가 있어 에러 메시지를 확인할 수 있다.
@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.setReason("IDK IDK IDK");
return appError;
}
}
package me.dsunni;
public class AppError {
private String message;
private String reason;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
}
localhost:8080으로 들어가보면 에러메시지 확인 가능하다.
위 ExceptionHandler은 해당 컨트롤러 안에서만 사용가능하다.
만약 전역적으로 ExceptionHandler을 사용하고 싶으면 따로 Class를 생성하고 그 클래스 위에 @ControllerAdvice
를 붙이고 안에 ExceptionHandler을 정의하면 여러 클래스에서 발생하는 에러 처리가 가능하다.
Error 응답의 상태값에 따라 다른 에러 페이지를 보여주고 싶을 때
resources
-static
또는templates
에 상태값을 이름으로 html파일들을 만들면된다.