Spring @Controller y @RestController - Conceptos de codificación N

En este breve artículo, veremos @Controlador y @RestController anotaciones y su diferencia en Spring MVC.

Índice
  1. @Controlador
  2. @RestController
  3. @Controller frente a @RestController

@Controlador

@Component
public @interface Controller {

	@AliasFor(annotation = Component.class)
	String value() default "";

}

Si miras lo de arriba @Controlador definición de anotación, encontrará que es solo una versión estereotipada de @Componiendo anotación que se utiliza para anotar la clase como controlador de resorte. Es principalmente una parte del controlador de la aplicación web Spring MVC (modelo-vista-controlador). Ha existido desde la evolución de Spring Framework.

@Controlador anotación típicamente utilizada en el nivel de clase en combinación con un @RequestMapping anotación a nivel de método para manejar solicitudes web.

@Controller
@RequestMapping("/users")
public class UserController {

	@GetMapping("/{id}", produces = "application/json")
	public @ResponseBody getUser(@PathVariable int id) {
		return getUserById(id);
	}

	private User getUserById(int id){
		// ...
	}
}

El método de manejo de solicitudes está anotado por @ResponseBody. Esta anotación permite la serialización automática del objeto de devolución en el HttpRespuesta.

@RestController

@Controller
@ResponseBody
public @interface RestController {

	@AliasFor(annotation = Controller.class)
	String value() default "";

}

Si miras lo de arriba @RestController definición de anotación, encontrará que esta es una versión avanzada de @Controlador que incluye ambos @Controlador y @ResponseBody anotaciones y, por lo tanto, simplifica la implementación del controlador para que ahora @ResponseBody no es necesario.

@RestController
@RequestMapping("/users")
public class UserController {

	@GetMapping("/{id}", produces = "application/json")
	public getUser(@PathVariable int id) {
		return getUserById(id);
	}

	private User getUserById(int id){
		// ...
	}
}

Cada método de manejo de solicitudes de clase de controlador serializa automáticamente los objetos devueltos en HttpResponse.

@Controller frente a @RestController

@Controller @RestController
Agregado en la versión Spring 2.5 Relativamente nuevo, agregado en la versión Spring 4.0
Versión estereotipada de @Componiendo Versión especializada de @Controlador
Obligatorio @ResponseBody en el controlador de métodos @ResponseBody no es obligatorio como es @Controller + @ResponseBody
Manera tradicional de crear Spring MVC Controller Uso preferido en servicios web RESTFul

Si quieres conocer otros artículos parecidos a Spring @Controller y @RestController - Conceptos de codificación N puedes visitar la categoría Tutoriales.

Deja un comentario

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

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas