delpho

[Spring] @Controller 와 @RestController의 차이 본문

CS/Spring

[Spring] @Controller 와 @RestController의 차이

delpho 2022. 9. 4. 18:50

_1.

Spring엔 컨트롤러를 지정하는 어노테이션이 두 개 존재.

 

  • 전통적인 Spring MVC 컨트롤러 👉 @Controller
  • Restful 웹서비스의 컨트롤러 👉 @RestController

 

그렇다면 가장 큰 차이는?

👉 HTTP Response Body가 생성되는 방식

 

 

 

_2.

 

@Controller

👉 주로 Model 객체를 만들어 데이터를 담은 후 View를 반환

              ❗ @ResponseBody으로 객체만 반환도 가능!

 

@RestController

👉 단순히 객체만을 반환 (JSON 혹은 XML)

👉 @Controller + @ResponseBody

 

 

 

[ @Controller 예제 코드 ]

@Controller
@RequiredArgsConstructor
public class UserController {

    private final UserService userService;

    @GetMapping(value = "/users")
    public @ResponseBody ResponseEntity<User> findUser(@RequestParam("userName") String userName){
        return ResponseEntity.ok(userService.findUser(user));
    }
    
    @GetMapping(value = "/users/detailView")
    public String detailView(Model model, @RequestParam("userName") String userName){
        User user = userService.findUser(userName);
        model.addAttribute("user", user);
        return "/users/detailView";
    }
}

 

 

[ @RestController 예제 코드 ]

@RestController
@RequestMapping("/user")
@RequiredArgsConstructor
public class UserController {

    private final UserService userService;

    @GetMapping(value = "/users")
    public User findUser(@RequestParam("userName") String userName){
        return userService.findUser(user);
    }

    @GetMapping(value = "/users")
    public ResponseEntity<User> findUserWithResponseEntity(@RequestParam("userName") String userName){
        return ResponseEntity.ok(userService.findUser(user));
    }
}

 

 

 


출처

https://dev-coco.tistory.com/84

 

[Spring] @Controller와 @RestController의 차이점 알아보기

@Controller 와 @RestController Spring에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController가 있습니다. 전통적인 Spring MVC 컨트롤러인 @Controller와 RESTful 웹 서비스의 컨트롤러..

dev-coco.tistory.com

https://mangkyu.tistory.com/49

 

[Spring] @Controller와 @RestController 차이

Spring에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController가 있습니다. 전통적인 Spring MVC의 컨트롤러인 @Controller와 Restuful 웹서비스의 컨트롤러인 @RestController의 주요한 차..

mangkyu.tistory.com