티스토리 뷰

@RestControllerAdvice와 @ControllerAdvice는 Spring에서 전역 예외 처리, 바인딩, 모델 객체 조작 등에 사용되는 어노테이션입니다.둘의 차이는 리턴 타입 처리 방식에 있습니다.


1. @ControllerAdvice

  • 설명:

여러 컨트롤러에 대해 전역적으로 예외 처리, 바인딩, 모델 객체를 적용할 수 있게 해주는 어노테이션입니다.

  • 리턴 타입:

일반적으로 @ExceptionHandler@ModelAttribute@InitBinder 메서드에서View(템플릿) 또는 ResponseEntity/ModelAndView 등 다양한 타입을 반환할 수 있습니다.

  •  사용:

전통적인 MVC(Thymeleaf, JSP 등) 기반 웹 애플리케이션에서 많이 사용합니다.


2. @RestControllerAdvice

  • 설명:

@ControllerAdvice + @ResponseBody의 조합입니다.즉, 모든 메서드에 자동으로 @ResponseBody가 적용됩니다.

  • 리턴 타입:

메서드의 반환값이 JSON, XML  HTTP Response Body로 직렬되어 반환됩니다.

  • 주로 사용처:

REST API 서버(프론트엔드와 통신하는 백엔드)에서 많이 사용합니다.


정리

어노테이션 반환 방식   사용처
@ControllerAdvice View, ModelAndView 등 MVC 웹앱
@RestControllerAdvice JSON 등 Response Body REST API 서버

 


예시

// REST API 예외 처리
@RestControllerAdvice
public class ApiExceptionHandler {
    @ExceptionHandler(Exception.class)
    public ErrorResponse handle(Exception ex) {
        return new ErrorResponse("error", ex.getMessage());
    }
}

// MVC 예외 처리
@ControllerAdvice
public class WebExceptionHandler {
    @ExceptionHandler(Exception.class)
    public String handle(Exception ex, Model model) {
        model.addAttribute("error", ex.getMessage());
        return "errorPage";
    }
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함