Tutoriel sur une introduction à Spring Roo

Arnaud Bringand

Quiconque ayant déjà travaillé sur un projet Java a été confronté à la mise en place de sa configuration Spring, et à sa verbosité. En effet, un fichier Spring doit déclarer de nombreux éléments. On peut citer par exemple les datasources, gestionnaire de transactions, toutes les configurations spécifiques aux différents frameworks Spring utilisés tels que Spring security, Spring Mvc.

Lors de mon précédent projet, j'ai eu l'occasion d'utiliser un outil qui m'a semblé bien pratique, Spring Roo. Il fournit un ensemble d'outils pour accélérer la mise en place d'un projet Spring et permet au développeur de se concentrer sur le projet plutôt que sa configuration.

Spring Roo inclut :

- une version d'Eclipse customisée pour Roo : Spring Tool Suite ;

- des lignes de commandes pour initialiser le projet ;

- des annotations utiles pour la génération de code.

Pour réagir à ce tutoriel, un espace de dialogue vous est proposé sur le forum : Commentez

- Titre : Tutoriel sur une introduction à Spring Roo

- Auteur : Arnaud Bringand

- Parution : 8 février 2016

- Licence : Copyright ® 2015 Arnaud Bringand. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Une version d'Eclipse : Spring Tool Suite

- II. Les lignes de commandes

- II-A. Initialisation d'une application web

- III. Annotations de Spring Roo

- IV. Conclusion

- V. Remerciements

I - Une version d'Eclipse : Spring Tool Suite

Il s'agit d'une version d'Eclipse customisée pour Roo. Son installation prend aussi en compte les autres outils pour l'utilisation de Roo, notamment le Shell. L'outil est disponible à cette adresse : http://spring.io/tools/sts/all

II - Les lignes de commandes

Spring Roo fournit des lignes de commandes exécutables sur un projet, qui vont permettre de générer du code à la place du développeur. Elles sont très pratiques , notamment à l'initialisation d'un projet. Les lignes de commandes peuvent être exécutées dans le Shell Roo, accessible par deux moyens :

- dans STS via la vue Roo Shell ;

- ou bien en exécutant /bin/roo.sh du répertoire d'installation de STS.

II-A - Initialisation d'une application web

Initialiser une application Spring devient très simple avec Roo, qui en quelques lignes de commandes, va fournir une application web déployable et prête à être customisée pour vos projets.

1. Créer un simple répertoire pour votre futur projet, y démarrer le Shell Roo, par la commande [répertoire d'installation de STS]/bin/roo.sh :

2. Initialiser le projet par cette commande : project -topLevelPackage com.netapsys.demo.

Nous voyons alors que Roo a initialisé l'application Web. Il s'agit d'un projet Maven, que nous pouvons importer dans STS comme tout projet Maven classique. Dès lors, nous pouvons continuer à générer d'autres éléments pour notre future application par ligne de commandes.

3. Ajoutons maintenant la configuration nécessaire pour JPA, via cette commande : jpa setup -provider HIBERNATE -database HYPERSONIC_IN_MEMORY

Nous constatons que Roo a mis à jour les fichiers applicationContext.xml et pom.xml. De plus, il a généré les fichiers database.properties et persistence.xml.

En regardant de plus près le fichier database.properties, nous voyons que Spring Roo inclut par défaut une implémentation sur HSQLDB. Celle-ci peut être changée, par exemple en MySQL, en important manuellement dans le pom les bibliothèques nécessaires et en modifiant le fichier.

4. Enfin, nous allons ajouter dans l'application webdes éléments pour utiliser Spring MVC.

Initialisation de Spring MVC

Cette, fois la liste des éléments ajoutés par Roo est plus grande. En particulier, il a ajouté :

- des tags ;

- des pages jspx ;

- un fichier webmvc.xml ;

- tiles + un layout et un fichier views.xml ;

- des images ;

- un répertoire destiné à l'i18n.

Ensemble de fichiers généré pour Spring MVC

Jspx générées par Spring Roo

Tags générés

Nous avons donc une application web préconfigurée, qui n'attend plus que les développements spécifiques à votre projet. Je vous propose de builder et démarrer cette application sous Tomcat 7, afin d'observer le résultat.

III - Annotations de Spring Roo

Comme je l'ai dit tout à l'heure, Spring Roo inclut de nombreuses annotations, qui vont prendre en charge une partie de la génération de votre code, grâce à la programmation par aspects. Il suffit d'annoter les éléments nécessaires et de démarrer votre Roo Shell, pour que celui-ci s'occupe du reste : il génère simplement des fichiers .aj pour compléter votre code.

Je vous présente celles que nous utilisons régulièrement à ce stade du projet :

- @RooJavaBean : annote une classe, et génère ses getters et setters ;

- @RooToString : annote une classe, et génère sa méthode toString() ;

- @RooJpaEntity : annote une classe. Elle permet de générer automatiquement certains éléments de configuration de Mapping JPA.

Prenons exemple sur cette arborescence :

Arborescence de fichiers

Bean annoté par Roo

Entité annotée

Et voici ce que génère Roo via les annotations :

Génération automatique par Roo des fichiers .aj

Génération des getters/setters : My_Bean_Roo.JavaBean.aj

Génération d'une entity

IV - Conclusion

Voilà. J'espère que ce petit aperçu vous permettra d'appréhender un outil, qui , bien utilisé, pourra vous faire gagner un temps précieux lors de vos développements.

V - Remerciements

Cet article a été publié avec l'aimable autorisation de la société Netapsys.

Nous tenons à remercier Claude Leloup pour la relecture de cet article et milkoseck pour la mise au gabarit.