[Spring Boot] Error 처리

yihyun·2024년 9월 11일

Spring Boot

목록 보기
9/33

Error

가끔 웹 페이지를 사용하다 보면 사용자에게 404, 500 등 에러 페이지가 노출되는 경우가 있다.

스프링 부트에서는 기본적으로 에러가 발생하면 에러라는 요청을 보내게 되는데 에러라는 요청을 보낼 곳이 없기 때문에 에러를 받아줄 페이지를 만들어줘야 한다.

Spring Boot 에는 Error 인터페이스가 있기 때문에 그냥 ErrorController 을 만들면 에러가 발생한다!

그래서 Error 처리를 위한 class 를 만들 때에는 Error Interface 를 구현한 클래스를 만들어줘야 한다.

구현을 안했을 경우 발생 에러 : [/error]}: There is already 'boardController' bean method : 이미 존재하는 메서드이다.

  • Ambiguous mapping. : 이미 있는 요청이라는 뜻

즉, 이미 내장되어 있기 때문에 에러가 발생한 것이다.

Spring Boot 에서는 에러 발생 시 error 라는 요청을 호출하게 되어있는데, 이 요청은 ErrorController 라는 인터페이스에 기본적으로 내장되어 있다.


Controller 패키지에 ErrorController 을 구현하는 ErrorControllerImpl 구현해주고 그 안에 Error 발생 시 이동할 수 있는 메서드를 만들어준다.

@Controller
public class ErrorControllerImpl implements ErrorController {

	Logger logger = LoggerFactory.getLogger(getClass());
	
	@RequestMapping(value="/error")
	public String error(Model model, HttpServletRequest req) {
		
		int code = (int) req.getAttribute(RequestDispatcher.ERROR_STATUS_CODE); // 404, 500과 같은 내용
		model.addAttribute("code", code);
		
		return "error";
	}
	
}

RequestDispatcher. : 에러에 대한 다양한 정보를 확인할 수 있다.
.ERROR_STATUS_CODE : 404, 500 과 같은 에러를 확인할 수 있다.

profile
개발자가 되어보자

0개의 댓글