Spring: Ne réinventez plus la Roo

Spring n’est plus à présenter, c’est un puissant framework qui a fait ses preuves depuis 2002, faisant de lui un environnement très pointu et parfois complexe à paramétrer, heureusement pour les débutants, Spring Roo intervient pour faciliter la tâche.

Présentation

Spring Roo est avant tout un outil de développement rapide en ligne de commande qui permet de faire gagner un temps précieux aux développeurs d’applications basées sur Spring.

Il vous aide à gérer l’infrastructure et le paramétrage de l’application développée, mieux encore, Roo est un outil intelligent et qui vous guidera pas-à-pas dans la conception de votre application en utilisant les deux commandes magiques « help » et « hint »

Il autorise également l’utilisation de la touche « tab » qui aura pour effet de compléter automatiquement vos commandes à la manière d’un shell linux ainsi que la combinaison des touches « Ctrl+Space » bien connue des utilisateurs d’eclipse pour visionner les combinaisons possibles.

Spring Roo permet de rapidement créer un projet en utilisant les bonnes pratiques, un programmeur java retrouvera ses marques via l’utilisation des technologies les plus connues comme Spring Framework, SpringSecurity, Spring Web Flow, Maven, Java Server Pages (JSP), Java Persistence API (JPA), AspectJ.

L’appel aux différentes commandes de Roo fait de votre projet, un projet incrémental, vous pouvez à tout moment ajouter ou enlever des technologies.

Installation de Spring Roo

L’installation et l’utilisation de Spring Roo peut se faire de deux manières:

-Soit en installant l’outil seul via ses sources, attention que cela nécessite l’installation de Maven.

-Soit en utilisant une version d’eclipse dédiée à Spring munie du plug-in Roo par défaut et qui se nomme Spring Tool Suite. L’installation de Spring tool suite étant plus simple, nous privilégierons cette méthode.

Utilisation de l’outil

Je ferais une démo en créant une rapide application, pleins d’exemples sont disponibles ici

Une fois décompressé, vous pouvez lancer l’exécutable nommé STS.

Intro spring tool suite

Créez un workspace

Création workspace spring tool suite

Créez un nouveau projet

Créer projet spring roo

Définissez les paramètres du projet (top level package)

Définir paramètres projet

Opération réussie

Projet spring roo créé

La structure de votre projet est créée automatiquement

Structure projet maven dans spring tool suite

On remarque tout de suite que c’est un projet maven avec la présence d’un fichier pom.xml.

L’environnement en ligne de commande s’ouvre

Shell spring roo

Lancez la commande « hint »

Commande hint dans spring roo

Roo va ensuite vous guider pour construire votre projet, vous ne serez jamais en panne d’inspiration lors du lancement des différentes commandes.

La première étape consiste à ajouter une API de persistance, pour rappel, JPA est une couche supplémentaire au-dessus de JDBC qui va permettre de manipuler les données sous forme d’objets.

Entrez « jpa setup » et utilisez « ctrl + espace » pour visionner les différentes combinaisons possibles. Remarquez qu’il est possible d’afficher les commandes déjà entrées avec les flèches haut et bas.

Construisez la commande suivante et pressez « enter »

 roo> jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY 

Téléchargement des dépendances

Vous venez d’ajouter les fonctionnalités d’hibernate ainsi qu’une base de données gérée en mémoire (utilisée uniquement à titre de test), Spring Roo ajoute automatiquement toutes les dépendances JAR nécessaires à l’exécution  de l’application.

Il y a plusieurs fournisseurs JPA pour mapper les objets relationnels

Différents types de base de données sont aussi supportés, n’oubliez pas que si vous utilisez une base de données non libre comme oracle, il vous faudra installer le driver manuellement dans votre référentiel maven local :

 shell> mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.2 -Dpackaging=jar -Dfile=/chemin_vers_le_fichier_jar 

L’étape suivante consiste à créer des entités, l’idée de cette démo est de créer une interface qui va gérer des tiers, lancez la commande :

 roo> entity jpa --class ~.domain.Customer 

Génération des fichiers aspectJ

Le tilde (~) représente la racine de votre package précédemment créé, Spring Roo se positionne automatiquement sur la dernière entité créée.

Vous venez donc de créer une entité « Customer » vide qui va vous permettre par la suite de manipuler les données de la table s’y rapportant. L’objet Customer.java va en fait contenir toutes les méthodes CRUD nécessaires à la gestion des données clientes.

Notez au passage la génération de fichiers AspectJ (.aj), ces fichiers sont en fait toute la puissance de Spring Roo, en effet, ce sont eux qui sont garants de la maintenance et l’évolution de votre application, ils sont dynamiques, il ne faut donc pas les éditer directement.

AspectJ est connu pour faire du développement « orienté aspect » en définissant des points d’entrée dans vos programmes, ici, il agit avec la fonctionnalité de déclaration de type (ITD). Vous allez coder les membres (méthodes, champs, etc…) et prendre le contrôle sur le cycle de vie des fichiers java sans vous souciez de leur contenu mais vous pouvez à tout moment les éditer manuellement.

Créez ensuite les champs de cette nouvelle entité « Customer » (mappé avec la table des clients)

Créons ensuite les champs firstname (caractère), name (caractère), age (entier), street (caractère), postal (caractère) et city (caractère).

Voici les commandes utilisées:

 roo> field string --fieldName firstname
roo> field string --fieldName name
roo> field number --fieldName age --type int
roo> field string --fieldName street
roo> field string --fieldName postal
roo> field string --fieldName city 

Le résultat dans la console donne l’évolution de nos fichiers dans le workspace

Génération de fichiers aspectJ

On remarque que l’entité Customer se voit enrichir de nouvelles variables d’instance

Variables d'instances de la classe créée

Validation

Après avoir créé ces six champs, on peut se demander « quid de la validation ? », les champs étant de type string, il est possible d’encoder tout et n’importe quoi.

Spring Roo va plus loin en proposant une validation javabean issu de la JSR303 du Spring Framework via des annotations vous allez limiter les erreurs de saisies en forçant une plage à l’utilisateur.

Il sera possible de saisir une adresse mail unique, de mettre une plage de 0 à 120 pour l’âge, de forcer l’encodage d’une date dans la passé pour une date de naissance, etc…

Ajoutons le champ « email » avec la commande suivante :

 roo > field string --class ~.domain.Customer --fieldName email –unique 

Nous allons aussi modifier le champ « age », il suffit de supprimer la variable d’instance dans le fichier Customer.java et de relancer la commande :

 roo> field number --fieldName age --type int --min 0 --max 120 

Pour info, quelques options supplémentaires pour la création des champs, pour connaitre la liste complète lors de la saisie, tapez « — » puis Ctrl-Space

Option Définition Type
–min Valeur minimum Numérique
–max Valeur maximum Numérique
–past Doit être dans le passé Date
–future Doit être dans le futur Date
–notNull Ajoute une contrainte d’unicité Tous
–nullRequired Doit être null Tous
–sizeMax Taille maximum Caractère
–sizeMin Taille minimum Caractère
–regEx Expression régulière de validation Caractère

Montez l’échafaudage

L’étape suivante est d’exposer vos entités à un contrôleur web, c’est la technique de l’échafaudage introduite par ruby on rail (ou scaffolding en anglais).

Lancez la commande

 roo> web mvc setup 

Toute une série de fichiers sont ensuite générés pour créer la couche web de votre application, la génération utilise des technologies comme Apache Tiles, Spring JavaScript.

Finalisez en lançant la commande ci-dessous pour finaliser le paramétrage, le nom du package étant celui que vous avez défini au début de cette démo.

 roo> web mvc all --package org.easybi.domain 

Lancement de l’application

Retournez ensuite dans le répertoire de votre workspace, positionnez-vous dans le répertoire du projet demo pour retrouver le fichier pom.xml et lancez l’ultime commande:

 shell> mvn tomcat:run 

Lancement de tomcat

Lancez ensuite un navigateur web et entrez l’adresse http://localhost:8080/demo

Votre nouvelle application s’affiche

Lancement de l'application

Il est maintenant possible de manipuler des clients, vous pouvez en créer via le menu « create new customer »

Création d'un tiers

Vous pouvez ensuite les lister/modifier/supprimer avec le menu « List all customers »

Modification d'un tiers

Conclusion

Un outil intuitif pour développer rapidement des applications Java EE, si vous êtes débutant, il vous permettra de comprendre et d’étudier le fonctionnement de Spring, pour les plus expérimentés, il est évident que Spring Roo permettra uniquement de construire les bases d’un projet afin d’augmenter leur productivité pour ensuite reprendre la main et affiner les fonctionnalités.

Toutes les possibilités ne sont pas montrées dans cet article tellement celles-ci sont nombreuses voir même infinies, il est aussi possible de créer des add-on. Je vous invite à lire la documentation qui s’avère être très complète.

Attention de bien utiliser la version 1.2.5 de la documentation dont je me suis basé pour écrire cet article car certaines commandes notamment pour créer un contrôleur MVC sont notées comme « deprecated ».

Laisser un commentaire

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

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

Petit calcul pour valider votre commentaire! merci * Time limit is exhausted. Please reload CAPTCHA.