Tutoriel sur une introduction à Spring Roo

Image non disponible

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 Donner une note à l'article (5)

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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 :
    Image non disponible
  2. Initialiser le projet par cette commande : project -topLevelPackage com.netapsys.demo.
    Image non disponible
    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.
    Image non disponible
  3. Ajoutons maintenant la configuration nécessaire pour JPA, via cette commande : jpa setup -provider HIBERNATE -database HYPERSONIC_IN_MEMORY
    Image non disponible
    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.
    Image non disponible
    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.
Image non disponible
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.
Image non disponible
Ensemble de fichiers généré pour Spring MVC
Image non disponible
Jspx générées par Spring Roo
Image non disponible
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 :

Image non disponible
Arborescence de fichiers
Image non disponible
Bean annoté par Roo
Image non disponible
Entité annotée

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

Image non disponible
Génération automatique par Roo des fichiers .aj
Image non disponible
Génération des getters/setters : My_Bean_Roo.JavaBean.aj
Image non disponible
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é NetapsysNetapsys.

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

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

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.