Présentation de Spring Roo

logo_springroo

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 de mettre sur 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 inclue :

  • 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

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

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. Elle 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.

Initialisation d’une webApp

Initialiser une application Spring devient très simple avec Roo, qui en quelques lignes de commandes, va fournir une WebApp 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 :

roo_init_1

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

Initialisation du projet

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 futur application par ligne de commandes.

Résultat de l'initialisation

Résultat de l'initialisation

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

Initialisation JPA

Initialisation JPA

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.

Initialisation JPA

Initialisation de JPA

En regardant de plus près le fichier database.properties, nous voyons que Spring Roo inclue 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 librairies nécessaires et en modifiant le fichier.

4) Enfin, nous allons ajouter dans la Web App des éléments pour utiliser Spring MVC.

Initialisation de 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

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

vue

Jspx générées par Spring Roo

Généré pour Sring MVC

Tags générés

Nous avons donc une Web App 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 :

Annotations de Spring Roo

Comme je l’ai dit tout à l’heure, Spring Roo inclue 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 :

roo_avant _generation_fichiers_aj

Arborescence de fichiers

roo_bean

Bean annoté par Roo

RooEntity

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 automatique par Roo des fichiers .aj

Génération des getters/setters

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

Génération d'une entity

Génération d'une entity

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.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.