Diferencia entre la anotación @Controller y @RestController en Spring

Las anotaciones de Spring son una forma de metadatos que proporcionan datos sobre un programa. Las anotaciones se utilizan para proporcionar información complementaria sobre un programa. No tiene un efecto directo sobre el funcionamiento del código que anotan. No cambia la acción del programa compilado. 

Anotación @Controller: la anotación Spring @Controller también es una especialización de la anotación @Component . La anotación @Controller indica que una clase en particular cumple la función de un controlador . La anotación Spring Controller generalmente se usa en combinación con métodos de controlador anotados basados ​​en la anotación @RequestMapping . Solo se puede aplicar a las clases. Se utiliza para marcar una clase como controlador de requests web. Se usa principalmente con aplicaciones Spring MVC . Esta anotación actúa como un estereotipo de la clase anotada, indicando su rol. El despachador escanea dichas clases anotadas en busca de métodos asignados y detecta anotaciones @RequestMapping .

Sugerencia: lea más sobre Spring @Controller Annotation with Example para obtener una mejor comprensión. 

Anotación @RestController: RestController se utiliza para crear servicios web tranquilos con la ayuda de la anotación @RestController. Esta anotación se usa a nivel de clase y permite que la clase maneje las requests realizadas por el cliente. Entendamos la anotación @RestController usando un ejemplo. El RestController permite manejar todas las API REST, como las requests GET, POST, Delete y PUT. 

Consejo: lea más sobre Spring – REST Controller para obtener una mejor comprensión. 

Veamos ahora una gran diferencia importante entre los dos, que es la siguiente. Aquí, @Controller se usa para marcar clases como Spring MVC Controller, mientras que @RestController es una anotación conveniente que no hace más que agregar las anotaciones @Controller y @ResponseBody, para lo cual consulte el siguiente fragmento de código de la siguiente manera:  

@Controller
@ResponseBody

class Controller
{
    ------
    ------
    ------
}

es equivalente a

@RestController

class RestController
{
    ------
    ------
    ------
}

Finalmente, concluyamos las diferencias entre ellos a través del formato tabular que se muestra a continuación en un formato tabular de la siguiente manera:  

@Controlador

@RestController

@Controller se usa para marcar clases como Spring MVC Controller. La anotación @RestController es un controlador especial que se usa en los servicios web RESTful y es la combinación de las anotaciones @Controller y @ResponseBody.
Es una versión especializada de la anotación @Component. Es una versión especializada de la anotación @Controller.
En @Controller, podemos devolver una vista en Spring Web MVC. En @RestController, no podemos devolver una vista.
La anotación @Controller indica que la clase es un «controlador» como un controlador web. La anotación @RestController indica que la clase es un controlador donde los métodos @RequestMapping asumen la semántica @ResponseBody de manera predeterminada.
En @Controller, necesitamos usar @ResponseBody en cada método de controlador. En @RestController, no necesitamos usar @ResponseBody en cada método de controlador.
Se agregó a la versión Spring 2.5. Se agregó a la versión Spring 4.0.

Publicación traducida automáticamente

Artículo escrito por AmiyaRanjanRout y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *