@Target(value=TYEP) @Retention(value=RUNTIME) @Documented @Component public @interface Controller
@Target(value=TYEP) @Retention(value=RUNTIME) @Documented @Controller @ResponseBody public @interface RestController
@Controller + @ResponseBody의 동작을 조합한 형태 (같은 방식으로 작동함)@RestController
public class RestfulController {
...
}
@Controller
@ResponseBody
public class SpringMvcController {
...
}@ResponseBody를 적용시킬수도 있다. (단, 클래스에는 @Controller 어노테이션)@GetMapping("/api/hello")
@ResponseBody
public String apiHello() {
return "Spring is comming...";
}

이미지 출처 : www.facebook.com/photo/?fbid=1873079892846068&set=gm.3389524044492534
@Controller는 주로 View를 반환하기 위해 사용Spring MVC Container는 Client의 요청으로부터 View 반환View Resolver가 사용되며, View Resolver 설정에 맞게 View를 찾아 렌더링 @ResponseBody 어노테이션을 쓰게 된다.
https://mangkyu.tistory.com/49
@ResponseBody를 사용하여 Client에게 JSON 형태로 데이터를 반환
https://mangkyu.tistory.com/49
@RestController를 사용하여 Client에게 JSON 형태로 데이터를 반환