728x90
스프링 부트 개념과 활용
4. 스프링 부트 활용
포스팅 참조 정보
GitHub
공부한 내용은 GitHub에 공부용 Organizations에 정리 하고 있습니다
해당 포스팅에 대한 내용의 GitHub 주소
실습 내용이나 자세한 소스코드는 GitHub에 있습니다
포스팅 내용은 간략하게 추린 핵심 내용만 포스팅되어 있습니다
https://github.com/freespringlecture/springboot-concept-uses/tree/chap04-09-09-mvc-exceptionhandler
해당 포스팅 참고 인프런 강의
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard
실습 환경
- Java Version: Java 11
- SpringBoot Version: 2.1.2.RELEASE
9. 스프링 웹 MVC 9부: ExceptionHandler
SpringBoot에는 ErrorHandler가 이미 등록되어있음
ErrorHandler에 의해서 Error 메세지들이 보임
기본 @ExceptionHandler
테스트 코드
해당 된 컨트롤러 내에서만 동작하는 ExceptionHandler 테스트 코드
SampleController
@Controller
public class SampleController {
@GetMapping("/hello")
public String hello() {
throw new SampleException();
}
// AppError: App에서 만든 커스텀한 에러정보를 담고 있는 클래스가 있다면
@ExceptionHandler(SampleException.class)
//메서드 파라메터로 해당하는 Exception 정보를 받아 올 수 있음
public @ResponseBody AppError sampleError(SampleException e) {
AppError appError = new AppError();
appError.setMessage("error.app.key");
appError.setReason("IDK IDK IDK");
return appError;
}
}
SampleException
public class SampleException extends RuntimeException {
}
AppError
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;
}
}
스프링 @MVC
예외 처리 방법
@ControllerAdvice
ExceptionHandler 정의하면 여러 컨트롤러에서 발생하는 Exception을 처리하는 Handler가 동작하게 됨
@ExchangepHandler
스프링 부트가 제공하는 기본 예외 처리기
- BasicErrorController
상속받아서 메서드를 오버라이딩해서 구현하는 것을 레퍼런스에서 추천함
HTML로 요청하면 HTML로 응답하고 그 외에는 JSON으로 응답함
- HTML과 JSON 응답 지원
- 커스터마이징 방법
- ErrorController 구현
커스텀 에러 페이지
상태코드 값에 따라 다른 에러페이지 보여주기
에러 페이지 명
경로: src/main/resources/public/error/
경로에 상태코드와 동일한 에러페이지를 만들어야 동작함 아니면 첫번째 숫자만 명시해서 만들어도 됨
- 404.html
- 5xx.html
- ErrorViewResolver 구현
728x90
'개발강의정리 > Spring' 카테고리의 다른 글
[스프링 부트 개념과 활용] 4-9. 스프링 웹 MVC 11부: CORS (0) | 2019.11.15 |
---|---|
[스프링 부트 개념과 활용] 4-9. 스프링 웹 MVC 10부: Spring HATEOAS (0) | 2019.11.14 |
[스프링 부트 개념과 활용] 4-9. 스프링 웹 MVC 8부: HtmlUnit (0) | 2019.11.12 |
[스프링 부트 개념과 활용] 4-9. 스프링 웹 MVC 7부: Thymeleaf (0) | 2019.11.11 |
[스프링 부트 개념과 활용] 4-9. 스프링 웹 MVC 6부: index 페이지와 파비콘 (0) | 2019.11.10 |
댓글