2009-10-21 9 views
29

Existe-t-il un moyen de générer Spring Web appels qui utilisent respectivement application/json requêtes formatées et réponses?Spring 3 JSON avec MVC

Peut-être que ce n'est pas Printemps MVC, je ne suis pas sûr. Je suis à la recherche de bibliothèques Spring qui se comportent d'une manière similaire à Jersey/JSON. Le meilleur cas serait s'il y avait une annotation que je pourrais ajouter aux classes de contrôleur qui les transformerait en appels de service JSON.

Un tutoriel montrant comment construire Spring Web Services avec JSON serait génial.


EDIT: Je suis à la recherche d'une approche basée sur l'annotation (similaire à Jersey).

EDIT2: Comme Jersey, je suis à la recherche de support REST (POST, GET, DELETE, PUT).

EDIT3: De préférence, ce seront les entrées pom.xml et quelques informations sur l'utilisation du spring-js avec la version native de jackson Spring.

+0

Un sujet similaire est soulevé ici: http://stackoverflow.com/questions/658936/is-there-a-library-to-convert-java-pojos-to-and-from-json-and-xml –

+0

dma_k - cette question n'est vraiment pas similaire. Cette question pose une question sur la conversion entre les objets java et JSON, celui-ci demande spécifiquement comment utiliser Spring MVC pour envoyer et recevoir des messages JSON. – stevedbrown

Répondre

31

En cas d'autres ppl arrivent ici plus tard: http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/ était le lien le plus utile pour moi. Cela m'a finalement fait comprendre le modèle (après moins d'une journée de recherche).

+2

C'est beaucoup mieux si vous êtes déjà au printemps 3. Le projet Spring-JSON est génial, mais il repose malheureusement sur Spring 2.5. –

17

Vous pouvez certainement avoir des contrôleurs qui retournent une vue qui est en sortie JSON. Jetez un oeil à the Spring-JSON project.

Pour consommer des requêtes dans JSON, je suppose que vous voudriez simplement qu'un contrôleur passe un paramètre de requête à une bibliothèque JSON qui pourrait analyser les données?

+1

Ce n'est pas exactement ce que je veux. Cela devrait fonctionner comme Jersey, je ne veux pas m'en passer, le contrôleur MVC devrait être enveloppé avec une couche d'aspect JSON (probablement par des annotations) qui lui permet d'envoyer et de recevoir du JSON. Le projet Spring-JSON en fait la moitié (envoi) mais pas l'autre moitié. – stevedbrown

4

Il n'y a aucun moyen de pré-emballés pour faire ce que vous voulez que Jersey est bien intégré avec Spring via l'API Jersey-Spring donc il n'y a vraiment aucune raison réinventer la roue.

+0

J'utilise actuellement Jersey et c'est bien. Pour être honnête, je ne trouve pas l'intégration de Spring tout ce qui est irrésistible, ce qui n'est pas vraiment un gros problème. À l'instar de Spring MVC par rapport à Struts, je ne m'attends pas vraiment à beaucoup de changements avec la fonctionnalité Spring Rest JSON, j'essaie simplement de déterminer si elle existe vraiment pour pouvoir l'essayer. – stevedbrown

0

Il semble que le framework DWR ressemble beaucoup à ce que vous voulez obtenir.

0

Vous pouvez configurer les intercepteurs Spring MVC via handler mappings, puis utiliser les mappages pour transformer les données renvoyées en JSON. La configuration du gestionnaire peut être faite en XML (pas besoin de recompiler), et cela peut être complètement transparent pour le reste de l'application.

Il est assez facile d'annoter des contrôleurs avec des annotations, puis de connecter le processus d'amorçage BeanFactory pour enregistrer les contrôleurs dans un processus de mappage de gestionnaire.

J'ai utilisé cette approche pour transformer le résultat des contrôleurs à ressort en appels RTC GWT.

Vous pouvez également utiliser Spring AOP pour intercepter les appels de méthode de contrôleur et déballer/encapsuler les demandes de/vers JSON.

2

Depuis printemps-mvc 3.0 support officiel pour Ajax Remoting avec JSON est fourni dans le cadre de Spring MVC.Cela inclut la prise en charge de la génération de réponses JSON et des requêtes JSON de liaison à l'aide du modèle de programmation Spring MVC @Controller.

voir here

2

Cette fonctionnalité fait maintenant partie de Spring depuis la version 3.0. Vous pouvez simplement utiliser l'annotation @ResponseBody pour spécifier que vous souhaitez que la valeur de retour de vos méthodes de gestionnaire de requêtes soit sérialisée à JSON et envoyée en tant que corps de réponse. Voir http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/

Questions connexes