프레임워크/Spring

[ Spring ] @RestController @Controller 차이

IT마스터되자 2022. 3. 17. 22:56
728x90

@RestController @Controller 차이

 

@RestController는 스프링 4.x 이상부터 사용 가능한 어노테이션이다.

@Controller에 @ResponseBody가 결합된 어노테이션이라고 보면 된다.

@RestController는 문자열, JSON 형태의 데이터 반환할 때 주로 사용된다.

하여 Restful Api 개발할 때 주로 사용한다.

 

@RestController을 사용하면 메서드에 @ResponseBody 어노테이션을 안 써도 문자열과 JSON을 반환할 수 있다.

 

@Controller 
public class MemberController {
	
    private final MemberService memberService;

	public @ResponseBody Member getMember(@RequestBody String memberId) {
    	return memberService.getMemberInfo(memberId);
    }
}

위 예제를 보면 @Controller 어노테이션을 사용한 예제인데, member라는 객체의 데이터를 JSON으로 반환하기 위해서는 @ResponseBody가 필요하다

 

@RestController 어노테이션을 사용하면

@RestController 
public class MemberController {
	
    private final MemberService memberService;

	public Member getMember(@RequestBody String memberId) {
    	return memberService.getMemberInfo(memberId);
    }
}

@ResponseBody를 뺄 수 있다.

 

쉽게 보면 @ResponseBody의 차이점만 볼 수 있다. 하지만 우리는 누구인가 개발자 아닌가 더 자세하게 차이점을 알고 싶지 않은가? 하여 근본적으로의 차이점으로 보면 @Controller은 Model객체를 만들어 데이터를 담고 View를 찾는다면, @RestController은 단순히 객체만 반환하고, 객체 데이터를 JSON 또는 XML으로 변환해 HTTP통신을 하는 것이다.

 

RESTful의 기본 동작인 @Controller @ResponseBody를 개발자 편의성을 위해 나온 게 @RestController이다

 

   관련 글

저의 글을 읽어 주셔서 감사합니다. 오늘도 즐거운 하루 보내세요.

저의 글이 조금이나마 도움이 되셨다면 로그인이 필요 없는 공감♥ 한번 꾸욱 눌러주세요 하하~

728x90