IT/개발자 면접

Controller 와 RestController 차이

Collin 2025. 11. 17. 20:00
반응형

@RestController는 @Controller + @ResponseBody의 조합으로, 주로 JSON 형태의 데이터를 반환할 때 사용됩니다. 반면 @Controller는 주로 HTML 뷰를 반환하는 데 사용됩니다.


🧩 @Controller vs @RestController 차이점

항목 @Controller @RestController

주 용도 웹 페이지(HTML) 반환 JSON, XML 등 데이터 반환
반환값 처리 뷰 리졸버(ViewResolver)가 처리 @ResponseBody로 직접 HTTP 응답 본문에 출력
사용 예 return "home"; → home.html 렌더링 return user; → JSON 형태로 반환
주로 사용하는 곳 MVC 기반 웹 애플리케이션 RESTful API 서버

✅ 예시 코드 비교

1. @Controller 사용 예

@Controller
public class HomeController {
    @GetMapping("/home")
    public String home() {
        return "home"; // templates/home.html 렌더링
    }
}

2. @RestController 사용 예

@RestController
public class ApiController {
    @GetMapping("/api/user")
    public User getUser() {
        return new User("홍길동", 30); // JSON으로 반환
    }
}

💡 언제 어떤 걸 써야 할까?

  • 웹 페이지를 렌더링해야 한다면 → @Controller
  • 데이터(JSON/XML 등)를 반환해야 한다면 → @RestController

필요하다면

@Controller에

@ResponseBody를 메서드 단위로 붙여서 @RestController처럼 사용할 수도 있어요.

@Controller
public class ApiController {
    @GetMapping("/api/user")
    @ResponseBody
    public User getUser() {
        return new User("홍길동", 30);
    }
}

 

728x90
반응형

'IT > 개발자 면접' 카테고리의 다른 글

단일 서버에서 JWT를 피해야 하는 이유  (0) 2025.11.19
JWT 장점과 단점  (0) 2025.11.18
Interceptor 와 Filter 비교  (0) 2025.11.17
Spring MVC Model  (0) 2023.12.17
Spring Security 암호화 방식  (0) 2023.12.16