Diferencia entre la anotación spring @Controller y @RestController

Resuelto Srikanth asked hace 10 años • 15 respuestas

Diferencia entre resorte @Controllery @RestControlleranotación.

¿ Se puede @Controllerutilizar la anotación tanto para aplicaciones Web MVC como REST?
En caso afirmativo, ¿cómo podemos diferenciar si se trata de una aplicación Web MVC o REST?

Srikanth avatar Aug 11 '14 18:08 Srikanth
Aceptado
  • @Controllerse utiliza para marcar clases como Spring MVC Controller.
  • @RestControlleres una anotación de conveniencia que no hace más que agregar las anotaciones @Controllery @ResponseBody(ver: Javadoc )

Entonces las siguientes dos definiciones de controlador deberían hacer lo mismo

@Controller
@ResponseBody
public class MyController { }

@RestController
public class MyRestController { }
micha avatar Aug 11 '2014 11:08 micha

En el siguiente código te mostraré la diferencia entre @controller

@Controller
public class RestClassName{

  @RequestMapping(value={"/uri"})
  @ResponseBody
  public ObjectResponse functionRestName(){
      //...
      return instance;
   }
}

y@RestController

@RestController
public class RestClassName{

  @RequestMapping(value={"/uri"})
  public ObjectResponse functionRestName(){
      //...
      return instance;
   }
}

El @ResponseBodyestá activado por defecto. No es necesario agregarlo encima de la firma de la función.

BERGUIGA Mohamed Amine avatar Dec 22 '2015 09:12 BERGUIGA Mohamed Amine