본문으로 바로가기
반응형

안녕하세요, 여러분! 오늘은 Spring Framework에서 많이 볼 수 있는 두 어노테이션, @Controller와 @RestController에 대해 깊게 탐구해보겠습니다. 이 두 어노테이션은 서로 다른 목적과 사용 사례를 가지고 있기 때문에, 여러분의 Spring 프로젝트에서 효과적으로 사용하기 위해 그 차이를 정확히 이해하는 것이 중요합니다.

 

1. @Controller
@Controller는 전통적인 Spring MVC 컨트롤러로서 주로 웹 페이지를 반환하는데 사용됩니다.

메서드가 반환하는 값은 기본적으로 뷰 이름으로 해석됩니다. 예를 들어, 메서드가 "home" 문자열을 반환하면, 설정된 뷰 리졸버에 따라 "home.jsp"나 "home.html" 등의 뷰 페이지로 렌더링됩니다.

웹 응답으로 데이터(예: JSON)를 직접 반환하려면 @ResponseBody 어노테이션을 메서드에 추가해야 합니다.

예시:

 

@Controller
public class MyWebController {
    @RequestMapping("/page")
    public String showPage() {
        return "myPage"; // myPage.jsp 또는 myPage.html로 렌더링됩니다.
    }
}

 

2. @RestController
@RestController는 Spring 4에서 도입된 어노테이션으로, @Controller와 @ResponseBody의 조합과 같습니다.

주로 RESTful 웹 서비스를 구현하는데 사용됩니다.

메서드가 반환하는 값은 HTTP 응답 본문으로 직렬화됩니다. 객체를 반환하면 기본적으로 JSON 형식으로 클라이언트에 전송됩니다.

별도의 @ResponseBody 어노테이션을 사용할 필요가 없습니다.

예시:

@RestController
public class MyApiController {
    @RequestMapping("/data")
    public MyData getData() {
        return new MyData("example", 123); // JSON 형식으로 응답됩니다.
    }
}

정리
@Controller와 @RestController의 주요 차이는 응답 방식에 있습니다. 전자는 웹 페이지의 렌더링에 중점을 둔 반면, 후자는 RESTful API 응답에 중점을 둡니다. 프로젝트의 요구 사항에 따라 적절한 어노테이션을 선택하여 사용하면 됩니다.

그럼, 다음 포스트에서 또 만나요! 😊

 

반응형