Diferencia entre @Controller y @RestController Spring Framework

En este tutorial encontrarás las diferencias entre las anotaciones de Spring @Controller y @RestController

Un Controller es una clase que es responsable de preparar los datos que serán mostrados por la vista así como seleccionar la vista correcta a mostrar.

En el desarrollo de RESTful Web Services antes de Spring 4 era necesario usar la combinación de @Controller y @ResponseBody para crear un RESTful response. A partir de Spring 4 se agregó la anotación @RestController.

Diferencia entre @Controller y @RestController

@Controller esta anotacion es usada para parcar una clase como Controller en SpringMVC mientras @RestController es un controller especial en RESTful especificacion y equivale a la suma de @Controller y @ResponseBody.

@RestController es añadida a partir de Spring 4.0 esto mejora la creación de RESTful web services y simplifica el uso de las anotaciones @Controller y @ResponseBody.

@Controller en un @Component especial mientras @RestController es un @Controller especial. Como se muestra a continuación para la anotación RestController.

@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Controller @ResponseBody public @interface RestController

Aquí un ejemplo del uso de la anotación para crear un RESTFul con @Controller y @RestController

Con RestController

@RestController public class Book { @RequestMapping(value={«/book»}) public Book getBook(){ //…your code return book; } }

Con Controller

@Controller public class Book { @RequestMapping(value={«/book»}) @ResponseBody public Book getBook(){ //… your code return book; } }

Avatar de Rolando Castillo

Escrito por:

Deja un comentario