SPRING BOOT

[스프링부트 5] Spring MVC Controller 만들기 2탄

내. 일. 을 바꾸는 업무 자동화 2021. 11. 10. 09:23
반응형

지난 시간에는 @Controller 어노테이션(전통적인 Spring MVC 컨트롤러)에 대해 알아 보았습니다.

다시 간단하게 정리하여 볼까요?

 

@Controller는 주로 View를 반환하기 위해 사용되며, Data를 반환할 수 도 있다는 것입니다. 

Data를 반환할 경우에는 @ResponseBody 어노테이션을 활용하여 지난 예에서는 Json 형태로 데이터를 

반환하는 예제를 만들어 보았었죠.. (@ResponseBody : 자바 객체를 http 요청의 body 내용으로 매핑)

 

근데.. 이러한 쓰임에는 아무런 문제가 없지만.. 만약 Data만 반환하는 경우가 생긴다면 이때마다 모든 메서드에 @ResponseBody 어노테이션을 사용해야 하는 번거로움이 존재합니다.

 

그래서 나온 게 @RestController 입니다. @RestController은 이러한 Restful 웹서비스의 컨트롤러입니다. 

즉, @RestController = @Controller + @ResponseBody 이며, 

주요 용도는 View를 반환하는 케이스 외에, Json 형태로 객체 데이터를 반환할 때 사용됩니다. 

 

자, 그럼 설명은 이정도로 마치고, 예제를 만들어보며 공부해 볼까요?

지난 시간 작성한 SampleController.java 파일에 아래와 같이 코드를 작성해 보았습니다. 

먼저 설명을 좀 해볼까요? 빨강색 테두리 부분이 지난 시간 작성한 @Controller과 @ResponseBody 어노테이션에서 데이터를 반환하는 예제 였습니다.

이와 동일한 기능으로 Data 반환 시, 파랑색 @RestController을 사용하면, @Controller과 @ResponseBody 어노테이션을 생략하고 동일한 기능을 구현 할 수 있습니다. 

(import문의 파랑색은 @RestController 사용을 위해 임포트한 것입니다.)

자.. 완성된 소스는 아래와 같습니다. 여러분도 테스트 해 보시고 두 어노테이션의 차이점을 직접 경험해 보시면 좋을 것 같습니다. 

 

[예제 소스]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.mobile.mis.sample.controller;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
 
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMethod;
 
 
@Controller
public class SampleController {
    @RequestMapping(value = "/main")
    public String main() {
        return "index.html";
    }
 
    @ResponseBody
    @RequestMapping("/sample")
    public String sample() {
        String data = "@ResponseBody 어노테이션을 통해 반환";
        return data;
    }
 
    @RestController
    public class SampleRestController {
        @RequestMapping(value = "/sampleValue", method = RequestMethod.GET)
        public String getSampleValue() {
            String SampleValue = "@RestController = @Controller + @ResponseBody 이며, view 반환 외 Json 데이터 반환시 사용";
            return SampleValue;
        }
    }
}
 
cs

그럼 이제 호출을 해서 정말 데이터 반환이 제대로 되는지 확인해 봐야겠죠? 

http://localhost:8080/sampleValue 를 브라우저에서 호출하여 아래와 같은 화면이 나온다면 성공한 것입니다. 

자, 이제 여기까지 이해하고 따라오셨다면, 여러분은 적재적소에 어떤 어노테이션을 활용할지 판단하여 코드를 작성하면 됩니다. 

 

다음시간부터는 Spring Boot View 설정에 대해 알아보도록 합시다. 

반응형