@ RestController
wurde seit Spring 4.0.1 bereitgestellt. Diese Controller zeigen an, dass hier @RequestMapping-Methoden standardmäßig @ResponseBody-Semantik annehmen.
In früheren Versionen konnte eine ähnliche Funktionalität durch Verwendung von unten erreicht werden:
-
@RequestMapping
gekoppelt mit @ResponseBody
wie @RequestMapping(value = "/abc", method = RequestMethod.GET, produces ="application/xml") public @ResponseBody MyBean fetch(){ return new MyBean("hi") }
-
kann als eine der Möglichkeiten zum Verwenden von JSON mit Jackson oder XML verwendet werden.
-
MyBean kann definiert werden wie
@XmlRootElement(name = "MyBean") @XmlType(propOrder = {"field2", "field1"}) public class MyBean{ field1 field2 .. //getter, setter }
@ResponseBody
wird hier als die Ansicht unter MVC behandelt und wird direkt weitergeleitet, anstatt von Dispatcher Servlet weitergeleitet zu werden, und die entsprechenden Konverter konvertieren die Antwort in das entsprechende Format wie text/html, application/xml, application/json .
Allerdings ist der Restcontroller bereits mit ResponseBody und den entsprechenden Konvertern gekoppelt. Zudem wird hier, anstatt den Responsebody zu konvertieren, dieser automatisch in die HTTP-Antwort umgewandelt.