1.@RestController

2.@Controller

3.@RestController과 @Controller예시

1. @RestController

  • @RestController을 확인해보면 @ResponseBody와 @Controller이 들어있다.
  • @ResponseBody : 응답할 내용을 HTTP 메시지 바디에 담아서 응답한다.
  • @ResponseBody로 인해서 return 되는 것들은 view 이름을 탐색하는 게 아니라 HTTP 메시지 바디에 담겨서 응답이 된다.

2. @Controller

  • @RestControlle와 달리 @ResponseBody가 없다.
  • @RestController과 @ResponseBody가 없고 그냥 @Controller인 상태에서 return을 하게 되면 view 이름을 탐색한다. 없을 경우 5xx 에러가 뜬다.
  • @RestController처럼 HTTP 메시지 바디에 응답 메시지를 담고 싶으면 해당되는곳에 @ResponseBody를 해주거나 클래스 단위로 하고 싶을 경우 클래스 선언해놓은 곳 위에다가 @ResponseBody를 하면 된다.

3. @RestController과 @Controller 예시

@RestController예시

 

@RestController
public RestControllerClass {
	
    @GetMapping("/restcontroller")
    public String confirm() {
        
        return "ok";
}

 

  • 결과

@Controller예시

@Controller
public ControllerClass{

    @GetMapping("controller")
    public String confirmController() {
        return "ok"
    }

 

  • "ok"라는 view 이름이 없으면 5xx 에러

 

@Controller
public ControllerClass {

    @ResponseBody
    @GetMapping("controller")
    public String confirmController() {
        return "ok";
    }
@Controller
@ResponseBody
public ControllerClass {

   
    @GetMapping("controller")
    public String confirmController() {
        return "ok";
    }

 

  • 결과