BackEnd/spring

@Controller와 @RestController의 차이점

연향동큰손 2025. 2. 23. 20:59

 

스프링 MVC에서 빠질 수 없는 애노테이션이 바로 @Controller이다.

 

@Controller는 주로 HTML과 같은 뷰를 렌더링 할때 사용된다.

 

@Controller
public class MyController {

    @RequestMapping("/greeting")
    public String greeting(Model model) {
        model.addAttribute("message", "Hello, World!");
        return "greeting"; // greeting.jsp 또는 greeting.html과 같이 뷰를 찾아 렌더링
    }
    
}

 

 

하지만 뷰를 렌더링하는것 이 아닌 Data(또는 객체)를 반환해야 하는 경우도 존재한다.

 

이럴때는 @ResponseBody 애노테이션을 통해 응답값을 JSON형태의 데이터로 변환 할 수 있다.

 

@Controller
public class MyController {

    @RequestMapping("/api/greeting")
    @ResponseBody
    public Greeting apiGreeting() {
        return new Greeting("Hello, World!"); // JSON/XML로 직접 반환
    }
}

 

@RestController란?

 

@RestController는 @Controller와 @ResponseBody가 합쳐진 애노테이션이라고 생각하면 편하다.

 

뷰를 렌더링 해주는 컨트롤러에서는 @Controller를 사용하여 뷰를 반환해주면 되고,

 

상품정보 조회, 회원정보 조회은 Rest API를 개발할때는 응답값을 JSON데이터로 변환하여 반환해줘야 하므로 

 

@RestController를 넣어주면 된다.

 

@RestController
public class MyRestController {

    @RequestMapping("/api/greeting")
    public Greeting apiGreeting() {
        return new Greeting("Hello, World!"); // JSON/XML로 직접 반환
    }
}