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 == ....)
}
}
}
'Spring boot > Bank App 만들기' 카테고리의 다른 글
Server To Server 개념을 알아보자. (0) | 2024.09.25 |
---|---|
31. 비동기 통신 사용해보기 (Fatch 함수 사용) (0) | 2024.09.25 |
29. 파일 업로드 - 2단계(ResourceHandler 사용,초기파라미터 사용) (1) | 2024.09.25 |
28.파일 업로드-1 단계(멀티파트가 뭘까?) (1) | 2024.09.25 |
27.사용자 비밀번호 암호화 처리 (0) | 2024.09.25 |