REST 는 ‘Respresentational State Transfer’의 약어로 하나의 URI는 하나의 고유한 리소스(Resource)를 대표하도록 설계된다는 개념에 전송방식을 결합해서 원하는 작업을 지정합니다.
예를 들어 ‘/boards/123’은 게시물 중 123번이라는 고유한 의미를 가지게 설계하도록하고 , 이에 대한 처리는 get , post 방식과 같이 추가적인 정보를 통해서 결정하도록합니다. 따라서 REST 방식은 다음과 같이 구성된다고 생각할 수 있습니다.

스프링은 @RequestMapping이나 @ResponseBody 와 같이 REST 방식의 데이터 처리를 위한 여러 종류의 어노테이션과 기능이 있습니다. REST와 관련해서 알아두어야 하는 어노테이션들은 다음과 같습니다 .

REST 방식에서 가장먼저 기억해야하는 점은 서버에 전송하는 것이 순수한 데이터라는 점입니다. 기존의 Controller에서 Model에 데이터를 담아서 JSP 등과 같은 뷰(View)로 전달하는 방식이 아니므로 기존의 Controller와 다르게 동작합니다
스프링 4에서 부터는 @Controller 외에 @RestController라는 어노테이션을 추가해서 해당 Controller 의 모든 메서드의 리턴타입을 기존과 다르게 처리한다는 것을 명시합니다. @RestController 이전에는 @Controller와 메서드 선언부에 @RequestBody를 이용해서 동일한 결과를 만들 수 있습니다.
@RestController는 메서드의 리턴타입으로 사용자가 정의한 클래스 타입을 사용할수 있고 , 이를 JSON이나 XML로 자동으로 처리할 수 있습니다