Diferencia entre la anotación spring @Controller y @RestController
Diferencia entre resorte @Controller
y @RestController
anotación.
¿ Se puede @Controller
utilizar 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?
Aceptado
@Controller
se utiliza para marcar clases como Spring MVC Controller.@RestController
es una anotación de conveniencia que no hace más que agregar las anotaciones@Controller
y@ResponseBody
(ver: Javadoc )
Entonces las siguientes dos definiciones de controlador deberían hacer lo mismo
@Controller
@ResponseBody
public class MyController { }
@RestController
public class MyRestController { }
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 @ResponseBody
está activado por defecto. No es necesario agregarlo encima de la firma de la función.