| Mostly used traditional Spring MVC service. | Represents RESTful web service in Spring. |
| It is mostly used in Spring MVC service where MODEL data needs to rendered USING view. | It is used in case of RESTful web service that returns object values bound to response body. |
| If response values NEED to be converted through HttpMessageConverters and sent via response object, EXTRA annotation @ResponseBody needs to be used on the class or the method handlers. | The default behavior of the @RestController needs to be WRITTEN on the response body because it is the combination of @Controller and @ResponseBody. |
| @Controller provides control and flexibility over how the response needs to be sent. | @RestController annotation has no such flexibility and writes all the results to the response body. |