Spring MVC - Erzwinge, dass ein Controller MappingJacksonJsonView (s) erstellt

8

Hier haben wir eine grundlegende Webapp mit JSP, die einige JSON-basierte REST-Service-URLs bereitstellen muss.

Diese URLs befinden sich alle unter /services und werden von MyRestServicesController generiert.

Die Beispiele, die ich für Einstellungen in JSON-basierten Ansichten sehe, verwenden ContentNegotiatingViewResolver . Aber es scheint mir ein Overkill zu sein, da dieser Resolver für Situationen gedacht ist, in denen die gleiche URL eine andere Ausgabe erzeugen könnte.

Ich möchte nur, dass meine one RestServicesController immer MappingJacksonJsonView(s) produziert.

Gibt es eine sauberere, einfachere Möglichkeit, den Controller einfach so zu steuern?

    
David Parks 21.03.2011, 07:56
quelle

3 Antworten

12
  

Gibt es eine sauberere, direktere Möglichkeit, den Controller einfach so zu steuern?

Ja, es gibt. Sie können sich dieses Beispiel ansehen, das ich in Spring-Foren gepostet habe. Kurz gesagt, die Art, wie ich es vorziehe, ist durch folgendes.

ApplicationContext:

%Vor%

Controller

%Vor%

EDIT 2013: In diesen modernen Tagen wäre @ skaffmans Ansatz eine gute Alternative.

    
Johan Sjöberg 21.03.2011, 08:26
quelle
9

Wenn Sie nur JSON ausgeben müssen, ist die Ansichtsebene selbst redundant. Sie können die Annotation @ResponseBody verwenden , um Spring zu beauftragen, dein Modell direkt mit Jackson zu serialisieren. Es erfordert weniger Konfiguration als die Methode MappingJacksonJsonView und der Code ist weniger überladen.

    
skaffman 21.03.2011 10:18
quelle
3

Solange Sie mvc: annotation-driven und Jackson auf dem Klassenpfad ist, dann müssen Sie nur @ResponseBody für Ihre Methoden verwenden und der Rückgabetyp wird in JSON pro Spring-Standard konvertiert HTTP Nachrichtenkonvertierung Funktionalität.

Schau dir auch dieses Video um ca. 37:00 Uhr an: Mastering Spring MVC .

    
sourcedelica 21.03.2011 13:46
quelle

Tags und Links