Guide rapide de Spring Roo

Guide rapide du printemps Roo

1. Vue d'ensemble

Spring Roo est un outil de développement rapide d'applications (RAD) qui vise à fournir des résultats rapides et instantanés axés sur les applications Web Spring et les nouvelles technologies Spring. Il nous permet de générer du code standard et une structure de projet pour les applications Spring avec des commandes simples à utiliser.

Roo peut être utilisé comme une application autonome à partir de la ligne de commande du système d'exploitation. Il n'est pas nécessaire d'utiliser Eclipse, Spring Tool Suite (STS) ou tout autre IDE; en fait, nous pouvons utiliser n'importe quel éditeur de texte pour écrire du code!

Cependant, pour des raisons de simplicité, nous utiliserons STS IDE avec l’extension Roo.

2. Installation de Spring Roo

2.1. Exigences

Pour suivre ce tutoriel, ceux-ci doivent être installés:

2.2. Installation

Une fois que nous avons téléchargé et installé Java JDK et STS, nous devons décompresser Spring Roo et l'ajouter au chemin d'accès système.

Créons la variable d’environnementROO_HOME et ajoutons%ROO_HOME%in au chemin.

Pour vérifier que Roo est installé correctement, nous pouvons ouvrir la ligne de commande et exécuter les commandes suivantes:

mkdir example
cd example
roo quit

Après quelques secondes, nous verrons:

                _
 ___ _ __  _ __(_)_ __   __ _   _ __ ___   ___
/ __| '_ \| '__| | '_ \ / _` | | '__/ _ \ / _ \
\__ \ |_) | |  | | | | | (_| | | | | (_) | (_) |
|___/ .__/|_|  |_|_| |_|\__, | |_|  \___/ \___/
    |_|                 |___/          2.0.0.RC1

Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.

Roo est installé et fonctionne. Veuillez noter que la version de Spring Roo varie et que les étapes et les instructions peuvent dépendre de la version utilisée.

Important: Spring Roo 2.0 n’est pas rétrocompatible avec 1.x.

2.3. Ajout et configuration de l'extension STS

De série, STS prend en charge le développement d'applications Spring et comprend des extensions prêtes à l'emploi. Cependant, l'extension Spring Roo n'est pas incluse. Par conséquent, nous devrons l'ajouter manuellement.

Dans STS, allons àInstall New Software et importons des signets dansAvailable Software Sites. Actuellement, les signets se trouvent dans le dossier%ROO_HOME%\conf. Une fois que nous avons importé les signets, nous pouvons rechercher simplementroo et installer la dernière version deSpring IDE Roo Support. Au final, on nous demandera de redémarrer STS.

Pour des étapes détaillées et à jour, nous pouvons toujours consulter la documentation deSpring Roo Getting Started.

Une fois que nous avons installé le support Roo dans STS, nous devons configurer l’extension. C'est aussi simple que de pointer Roo Support vers le dossier%ROO_HOME%. Encore une fois,Spring Roo Getting Started donne des étapes détaillées pour le faire.

Maintenant, nous pouvons aller à nouveau dans le menu de l'application «Fenêtre» et sélectionnerShow View > Roo Shell.

3. Premier projet

3.1. Configurer un projet dans STS

Dans STS, ouvrons la fenêtreRoo Shell et cliquez sur l’icôneCreate New Roo Project. Cela ouvrira une fenêtreNew Roo Project.

Nous nommerons le projetroo et utiliseronscom.example comme nom de package de niveau supérieur. Nous pouvons laisser toutes les autres valeurs par défaut et passer à la fin pour créer un nouveau projet en utilisant Roo.

Dans STS, cela exécutera la commande suivante pour nous:

project setup --topLevelPackage com.example --projectName "roo" --java 8 --packaging JAR

Comme déjà mentionné, nous n'avons pas besoin d'un IDE, et nous aurions pu exécuter cette commande depuis Roo Shell nous-mêmes! Pour simplifier, nous utilisons les fonctionnalités intégrées de STS.

Si nous obtenons l'erreur suivante:

Could not calculate build plan: Plugin org.codehaus.mojo:aspectj-maven-plugin:1.8
  or one of its dependencies could not be resolved:
  Failed to read artifact descriptor for org.codehaus.mojo:aspectj-maven-plugin:jar:1.8

le moyen le plus simple de résoudre ce problème est d'éditer manuellement le fichierpom.xml et de mettre à jouraspectj.plugin.version de1.8 vers1.9:

1.9

À ce stade, il ne devrait y avoir aucune erreur dans le projet, et il y aura quelques fichiers générés automatiquement pour nous.

3.2. Coquille Roo

Il est maintenant temps de vous familiariser avec le Roo Shell. L'interface utilisateur principale de Spring Roo est en fait une invite de commande!

Par conséquent, revenons à la fenêtre Roo Shell. Dans celui-ci, exécutons la première commande en tapant «h» et en appuyant sur CTRL + ESPACE:

roo> h

help    hint

Roo suggérera et complétera automatiquement les commandes pour nous. Nous pouvons taper «salut», appuyer sur CTRL + ESPACE, et Roo suggérera automatiquement la commandehint.

Une autre fonctionnalité intéressante de Roo Shell est lecontext awareness. Par exemple, la sortie de la commandehint changera en fonction de l'entrée précédente.

Exécutons maintenant la commandehint et voyons ce qui se passe:

roo> hint
Roo requires the installation of a persistence configuration.

Type 'jpa setup' and then hit CTRL+SPACE. We suggest you type 'H'
then CTRL+SPACE to complete "HIBERNATE".

After the --provider, press CTRL+SPACE for database choices.
For testing purposes, type (or CTRL+SPACE) HYPERSONIC_IN_MEMORY.
If you press CTRL+SPACE again, you'll see there are no more options.
As such, you're ready to press ENTER to execute the command.

Once JPA is installed, type 'hint' and ENTER for the next suggestion.

Cela nous indique les prochaines étapes à accomplir. Ajoutons maintenant une base de données:

roo> jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
Created SRC_MAIN_RESOURCES\application.properties
Updated SRC_MAIN_RESOURCES\application.properties
Updated SRC_MAIN_RESOURCES\application-dev.properties
Updated ROOT\pom.xml [added dependencies org.springframework.boot:spring-boot-starter-data-jpa:, org.springframework.boot:spring-boot-starter-jdbc:, org.hsqldb:hsqldb:; added property 'springlets.version' = '1.2.0.RC1'; added dependencies io.springlets:springlets-data-jpa:${springlets.version}, io.springlets:springlets-data-jpa:${springlets.version}; added dependencies io.springlets:springlets-data-commons:${springlets.version}, io.springlets:springlets-data-commons:${springlets.version}]

À ce stade, nous devrons exécuter certaines commandes. Entre chacun d'eux, on peut toujours exécuter la commandehint pour voir ce qui est suggéré par Roo. C'est une fonctionnalité très utile.

Let’s run the commands first, et nous les passerons en revue par la suite:

roo>
entity jpa --class ~.domain.Book
field string --fieldName title --notNull
field string --fieldName author --notNull
field string --fieldName isbn --notNull
repository jpa --entity ~.domain.Book
service --all
web mvc setup
web mvc view setup --type THYMELEAF
web mvc controller --entity ~.domain.Book --responseType THYMELEAF

Nous sommes maintenant prêts à exécuter notre application. Cependant, revenons en arrière dans les commandes pour voir ce que nous avons fait.

Tout d'abord, nous avons créé une nouvelle entité persistante JPA dans le dossiersrc/main/java. Ensuite, nous avons créé trois champsString dans la classeBook, leur avons donné un nom et défini pour ne pas êtrenull.

Après cela, nous avons généré le référentiel Spring Data pour l'entité spécifiée et créé une nouvelle interface de service.

Au final, nous avons inclus la configuration Spring MVC, installé Thymeleaf et créé un nouveau contrôleur qui gère notre entité. Du fait que nous ayons passé Thymeleaf en tant que type de réponse, les méthodes et vues générées refléteront cela.

3.3. Lancer l'application

Rafraîchissons le projet et faisons un clic droit sur le projetroo et sélectionnezRun As > Spring Boot App.

Une fois l'application lancée, nous pouvons ouvrir un navigateur Web et accéder àhttp://localhost:8080. Ensuite, sur l'icône Roo, nous verrons le menuBook et sous deux options:Create Book etList Books. Nous pouvons utiliser cela pour ajouter un livre à notre application et afficher la liste des livres ajoutés.

3.4. Autres caractéristiques

Lorsque nous ouvrirons le fichier de classe deBook.java, nous remarquerons que la classe est annotée avec les annotations de@Roo. Ceux-ci ont été ajoutés par Roo Shell et permettent de contrôler et de personnaliser le contenu des fichiers de déclaration inter-type (AspectD) AspectJ. Nous pouvons afficher les fichiers dans Package Explorer dans STS en désélectionnant le filtre «Masquer les ITD Spring Roo générés» dans le menu Affichage, ou ouvrir les fichiers directement à partir du système de fichiers.

Les annotations Roo ont une politique de rétentionSOURCE. Cela signifiethe annotations won’t be present in compiled class bytecode, et il n'y aura aucune dépendance à Roo dans les applications déployées.

Une autre partie manifestement manquante dans la classeBook.java estgetters etsetters. Ceux-ci sont stockés dans des fichiers AspectJ ITD séparés, comme déjà mentionné. Roo maintiendra activement ce code standard pour nous. Par conséquent, les modifications apportées aux champs de n'importe quelle classe seront automatiquement répercutées dans AspectJ ITD car Roo "surveille" toutes les modifications, que ce soit via Roo Shell ou directement par un développeur dans l'EDI.

Roo s'occupera également du code répétitif comme les méthodestoString() ouequals().

De plus, la structure peut être facilement supprimée du projet, en évitant le verrouillage du fournisseur, en supprimant les annotations et en insérant AspectJ ITD dans du code java standard.

4. Conclusion

Dans cet exemple rapide, nous avons réussi à installer et à configurer Spring Roo dans STS et avons créé un petit projet.

Nous avons utilisé Roo Shell pour le configurer et n'avons pas eu besoin d'écrire une seule ligne de code Java réel! Et nous avons pu obtenir un prototype d'application opérationnel en quelques minutes et Roo s'est occupé de tout le code standard.

Comme toujours, le code utilisé tout au long de la discussion peut être trouvéover on GitHub.