GlobalControllerAdvice - @ExceptionHandler(Exception.class) 주석 처리
@ControllerAdvice // IoC 대상 (싱글톤 패턴) --> HTML 렌더링 예외에 많이 사용
public class GlobalControllerAdvice {
/**
* (개발시에 많이 활용)
* 모든 예외 클래스를 알 수 없기 때문에 로깅으로 확인할 수 있도록 설정
* 로깅처리 - 동기적 방식(System.out.println), @slf4j (비동기 처리 됨)
*/
// @ExceptionHandler(Exception.class)
// public void exception(Exception e) {
// System.out.println("----------------------");
// System.out.println(e.getClass().getName());
// System.out.println(e.getMessage());
// System.out.println("----------------------");
// }
package com.tenco.bank.controller;
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import com.tenco.bank.handler.exception.RedirectException;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.http.HttpServletRequest;
/**
* 존재하지 않는 경로 요청시 예외 처리 (404)
*/
@Controller // IoC (싱글톤 패턴 관리)
public class CustomErrorController implements ErrorController {
@GetMapping("/error")
public void handleError(HttpServletRequest request) {
Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
if(status != null) {
Integer statusCode = Integer.valueOf(status.toString());
if(statusCode == HttpStatus.NOT_FOUND.value()) {
// 404 코드라면
throw new RedirectException("잘못된 요청입니다", HttpStatus.NOT_FOUND);
}
// 상세 설정 가능 함
// else if (statusCode == ....)
}
}
}
728x90
'Spring boot > Bank App 만들기(deployment)' 카테고리의 다른 글
Bank App 만들기 ( deployment ) - 2단계 ( ResourceHandler, 초기 파라미터 사용 ) (0) | 2024.08.14 |
---|---|
Bank App 만들기 ( deployment ) - 파일 업로드 - 1 단계 ( 멀티파트 ) (0) | 2024.08.13 |
Bank App 만들기 ( deployment ) - 사용자 비밀번호 암호화 처리 (0) | 2024.08.13 |
Bank App 만들기 ( deployment ) - intercepter 활용 ( 인증검사 공통 처리 ) (0) | 2024.08.13 |
Bank App 만들기 ( deployment ) - 계좌 상세보기 페이징 처리 (0) | 2024.08.12 |