Sprint 4 – Maven – Spring Rest Controller

Spring Web MVC fait parti des modules les plus connu du framework Spring. Il permet de créer des sites internet. Via ce module, on peut créer des web services REST, objectif de cette article.

On passera par Maven pour gérer le projet. Vous pouvez récupérer les sources via ce repository GIT.

Prérequis

Je conseille de lire l’article Spring 4 Maven Hello World  avant de commencer si vous n’êtes pas à l’aise avec Spring 4 Maven, une configuration Spring par annotation et avec des injections de dépendance Spring.

Les dépendances

Au niveau du fichier de configuration de Maven, on retrouve comme dépendance le module Spring Web, de version 4 (4.3.7).

On peut aussi utiliser différents moyen de sérialiser et désérialiser les objets du webservice REST. On va utiliser le format JSON, via la bibliothèque Jackson.

On rajoute la dépendance javax servlet pour gérer le lancement de Spring automatiquement (voir AppInitializer)

Les plugins

Au niveau plugin, on retrouve “maven-compiler-plugin” pour définir la version de Java utilisé. (Java 8)

On rajoute le plugin “maven-war-plugin” et “tomcat7-maven-plugin” afin de gérer un serveur tomcat embarqué (voir cette article). Il suffit de lancer une commande maven “package tomcat7:run” pour lancer l’application web directement. On définit “spring4-maven-rest” comme “path” et “8080” comme port. Vous pouvez supprimer ces deux dépendances si vous passez par un serveur Java configuré.

Configuration Spring

Classe de configuration Spring: SpringAppConfiguration

La configuration Spring est basé par des annotations, via la classe SpringAppConfiguration. Cette classe reste très simple. On paramètre le package a scanné. On rajoute l’annotation EnableWebMvc pour préciser que l’application se base sur les annotations MVC et particulièrement l’annotation Controller.

Classe de configuration Web:  AppInitializer

WebApplicationInitializer est une interface très utile. Elle est permet d’initialiser la configuration de notre web application. Je l’utilise dans l’application afin de remplacer le fichier web.xml.

Je précise que le contexte Spring se charge à partir de l’arborescence “/rest” de l’application. Le fait de ne pas mettre l’arborescence root (“/”)  permet d’éviter de faire des interférences avec les pages web cliente de l’application. (voir l’exemple avec la page en Angular Js)

Controller d’exemple

On va tester l’application, en lançant le controller (non REST) d’exemple (SampleController). L’annotation “RequestMapping” permet de définir l’url (ou endpoint) de notre service.

Par rapport au type de la variable de retour, la construction de la réponse du service sera différente. Si la fonction retourne un String, comme la fonction “hello”, alors la valeur retournée sera la valeur HTML à afficher.

Du coup, lancer l’application (via la commande maven “package tomcat7:run” si vous ne changez pas la configuration Maven). Des que l’application est lancée,  naviguez sur la page “http://localhost:8080/spring4-maven-rest/rest/hello/”, vous verrez le message “Hello World!” s’afficher. Super, le contexte Spring est lancé !!

Restful controller

J’ai créé un service REST complet (UserSpringRestController) pour gérer (créer, supprimer, lister …) des utilisateurs.  Je me suis inspiré des bonnes pratiques de construction d’un service REST. Les actions du service REST sont basées sur la même URL (http://localhost:8080/spring4-maven-rest/rest/user/). Les méthodes HTTP identifient l’action du service. (GET -> listing, POST -> édition, DELETE -> suppression …)

Les objets Java des requêtes et les réponses sont sérialiser en format JSON via la bibliothèque Jackson. J’ai rajouté des annotations Jackson au niveau de la classe UserDTO afin de personnaliser cette sérialisation.

Pour tester ce service, vous pouvez utiliser un client REST comme PostMan. J’ai aussi créé une vue web cliente en AngularJs qui attaque ce Web Service, afin de faire une interface graphique pour gérer nos utilisateurs. Je vous laisse tester par vous même.

Conclusion

J’espère que cet article vous a aidé à mieux comprendre les services REST en Spring 4 MVC. Si vous avez des questions, n’hésitez pas à les poser.

2 thoughts on “Sprint 4 – Maven – Spring Rest Controller”

  1. Pingback: Spring Boot 2 – Mon MicroService complet – La pause Dev'

  2. Pingback: Architecture hexagonale: Prends ton livre et n’fais pas de bruit dans ma bibliothèque !! – La pause Dev'

Leave a Reply

Your email address will not be published. Required fields are marked *