본문 바로가기

Spring boot/Bank App 만들기(deployment)

Bank App 만들기 ( deployment ) - 존재하지 않는 경로에 대한 요청 처리( 404페이지 연결 )

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