@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이다
관련 글 |
저의 글을 읽어 주셔서 감사합니다. 오늘도 즐거운 하루 보내세요.
저의 글이 조금이나마 도움이 되셨다면 로그인이 필요 없는 공감♥ 한번 꾸욱 눌러주세요 하하~
'프레임워크 > Spring' 카테고리의 다른 글
[ Spring ] Transaction(트랜잭션)의 모든것 (0) | 2022.03.19 |
---|---|
[ Spring ] @Autowired, @Resource,@Inject 차이점 (0) | 2020.11.30 |