카테고리 없음

@RestController 애노테이션 정리

sungw00 2023. 5. 2. 16:09
728x90

@RestController의 특징

  • 스프링프레임워크 4.x 버전 이상부터 사용 가능
  • @Controller@ResponseBody결합됨 -> 컨트롤러 클래스에 @RestController를 붙이면, 하위 메서드에 @ResponseBody를 붙이지 않아도 문자열과 JSON 등을 전송할 수 있음
  • RestController는 Spring MVC Controller에 @ResponseBody가 추가된 것이기 때문에 @Controller와 달리 @RestController는 컨트롤러 클래스의 각 메서드마다 @ResponseBody를 추가하지 않아도 HTTP 응답데이터(body)에 자바 객체가 매핑되어 전달
  • @Controller인 경우는 바디를 자바 객체로 받기 위해서는 @ResponseBody 어노테이션을 반드시 명시해야 함
  • @Controller는 뷰를 리턴하는 메서드들을 가지고 있고, 뷰 리졸버가 해당하는 뷰를 찾아 렌더링해서 리턴한다.
  • @RestController는 문자열, 객체, JSON 등을 리턴하는 메서드들을 가지고 있다.(주 용도는 JSON 형태로 객체 데이터를 반환하는 것)
  • 커맨드 객체를 전송하기 위해서 JSON 형태로 데이터를 전송하는데, 이때 JSON 관련 라이브러리를 사용하기 위해 com.fasterxml.jackson.core:jackson-databind:2.5.4 의존성을 추가해줘야 함

커맨드 객체란 HTML 폼에서 Controller로 전송하는 객체를 의미하며, 쉽게 말하면 VO와 같은 객체를 의미한다.

 

@RestController 사용 예제(@RestController를 사용하여 map을 전송하는 방법)

@RestController
@RequestMapping("/hello/*") // /hello와 대응되는 모든 주소를 매핑
public class RestController {
    
    @RequestMapping("/test") // /hello/test와 대응되는 주소를 매핑
    public HashMap<String, Object> test() { // 반환 타입은 HashMap<String, Object> 형식
    
        HashMap<String, Object> hashMap = new HashMap<String, Object>(); // HashMap 선언
    
        // hashMap에 name, age, gender를 순서대로 추가
        hashMap.put("name", "john");
        hashMap.put("age", "32");
        hashMap.put("gender", "man");
        
        return hashMap; // hashMap을 return
    }
}

 

728x90