Groupe ALTEN
Fès shore
Département : Systèmes d’information
Présentation :
Réalisé par :
Jeudi 13 Juillet 2017
Brahmi Ismail
Plan
Motivation
Spring roo et AspectJ
Spring roo par l’exemple
Présentation de Spring roo
Configuration de Spring roo
Les commandes avec Spring roo
Exécution de l’exemple
2Conclusion
Plan
Motivation
Spring roo et AspectJ
Spring roo par l’exemple
Présentation de Spring roo
Configuration de Spring roo
Les commandes aves Spring roo
Exécution de l’exemple
3Conclusion
Motivation
L’amélioration de la productivité des développeurs est toujours
une nécessité incontournable et inévitable .
CRUD-Clients
Développement
Rapidité de Réalisation
Langage orienté
objet: java, Spring..
RAD
Create, Read,
Update,Delete
Comment faire pour
s’assurer l’intégrité
et la flexibilité ?
???
4
Plan
Motivation
Les commandes avec Spring roo
Spring roo par l’exemple
Présentation du Spring roo
Configuration de Spring roo
Spring roo et Aspect j
Exécution de l’exemple
5Conclusion
Explication du problème
6
Besoin :
L’utilisation d’un outil convention-over-configuration : codage
par convention pour diminuer le nombre de décisions qu’un
développeur doit prendre .
Procédure :
Créer et construire rapidement une application web.
Générer facilement le code java et les fichiers organisées autour du
projet.
Première solution :
Se diriger vers des solutions existantes en autre langages (
développement en Ruby on Rails ,Grails).
Faire réaliser toutes les taches de création traditionnellement ainsi les
opérations de base : CRUD * et DAO**.
Description
Pour démarrer un nouveau projet il faut tout d’abord :
public class Obj {
private int id;
private String name;
public Obj(){
}
public Obj(String name) {
this.name = name;
}
public void setId(int i) {
id = i;
}
….
}
Id name
.. ..
… ..
… ..
Donc on doit tout effectuer d’une manière
classique pour démarrer notre projet.
7
1.Créer ce projet
2.Decider une base de données
3.Creer les objets du domaine
(contrôleurs , vues, tests…).
Conséquences
8
Problème du temps :
Ajouter un contrôle de la sécurité et de l’accès.
Gérer les cas limites , les exceptions et les logs.
Problème au niveau du code :
Apres avoir démarrer et structurer le projet commence la phase de
développement :
La structure du code varie d’un développeur à l’autre chacun a ses
propres méthodes et pratiques de programmation .
Code fastidieux, dupliqué, et illisible….
Cela prend beaucoup de temps pour structurer le démarrage d’un nouveau
projet, une journée tout au mieux .
Code raisonné différemment et non standardisé
Solution ?
ROO : Real Object Oriented
SQL
ligne
attribut
encapsulation
9
Solution optimale
10
Mettre en place un outil pratique pour accélérer le démarrage d’un projet.
Se concentrer sur le projet plutôt que sa configuration.
Proposer une interface type terminale toute simple.
Avoir un code bien structuré et synthétisé .
N.B : Il d’autres outils de real object oriented le plus
connu : Grails de Ruby on Rails.
Utiliser les outils de real object oriented permettant une bonne
gestion du temps et une bonne génération du code. .
Spring roo
Plan
Motivation
Les commandes avec Spring roo
Spring roo par l’exemple
Présentation de Spring roo
Configuration de Spring roo
Spring roo et Aspect j
Exécution de l’exemple
11Conclusion
Spring roo : c’est un outil de développement rapide en ligne de
commandes qui permet de faire gagner un temps précieux aux
développeurs d’applications basées sur Spring .
Il estproposé par Ben Alex, l’un des contributeurs de la société SpringSource.
Il est basé sur un générateur du code aller-routeur (round-trip code generator).
C’est quoi Spring roo ?
12
Il aide a gérer l’infrastructure et le paramétrage de l’application développée.
Il est intelligent en aidant pas-a-pas dans la conception de l’application développée en
utilisant deux commandes: hint et help.
Il est fait d’un projet incrémental, ajout et suppression de technologies a tout moment.
Pourquoi utiliser Spring roo?
Productivité Accrue
Basé sur des standards Java et Spring.
Utilisable et programmable (sensibilisation, propositions).
Interface de type terminale simple.
Facile à supprimer (n’existe pas à l’ exécution).
13
Historique & Versions :
14
Spring roo a été proposé le 27 avril 2009 par Gavin King avec
des collègues de Cirrus Technologies.
En décembre 2003, La version 1.0.0.RELEASE a été
publiée.
En Octobre 2010 La version 1.1.0, a été déplacée vers une base
OSGi.
En 2014, DSID a fournit le type de développement RAD.
En mars 2017, Spring roo 2.0.0 final a été publié.
Historique & Versions :
15
Version : Spring Roo 1.X :
Architecture Active Record.
Code généré doit être simple a personnaliser.
Version : Spring Roo 2.0 :
code facile a personnaliser
concentre sur des nouvelles technologies
Plan
Motivation
Les commandes
Spring roo par l’exemple
Présentation du Spring roo
Configuration du Spring roo
Les requêtes avec Spring roo
Exécution de l’exemple
16Conclusion
17
L’implémentation de roo?
Description :
Roo est basé sur des Add-ons, ces derniers vont mettre a jour tous les fichier
du projet, grâce notamment a des annotations.
Les commandes permettent de générer le squelette des applications MVC, ce
code est sou forme de fichiers .java et .aj pour la partie Aspect.
Les fichiers sont organises autour d’un projet maven pour gérer la
dépendance (son fichier pom.xml contient toutes les dépendances et
configurations requises).
Le Développement est en time , roo ne peut pas ralentir le projet lors de
l’exécution in RunTime donc c’est pas un framework.
Plan
Motivation
Spring roo et AspectJ
Spring roo par l’exemple
Présentation du Spring roo
Configuration du Spring roo
Les commandes avec Spring roo
Exécution de l’exemple
19Conclusion
20
Technologies compatibles
IDE Eclipse
Apache Maven.
Apache Tomcat
Aspectj Développement Tools.
Nouvelles vues : Tymeleaf, Bootstrap, JQuery
Télécharger roo sur le site Spring.
Installation de Jdk,
Installation de Apache maven 2.0.9 ou plus.
Utilisation du SpringSource Tools STS comme IDE de
spring base sur eclipse.
21
Préparation de l’IDE
Plan
Motivation
Spring roo et Aspectj
Spring roo par l’exemple
Présentation de Spring roo
Configuration de Spring roo
Les commandes avec Spring roo
Exécution de l’exemple
22Conclusion
AspectJ c’est quoi ?
AspectJ est une extension de la proframmation orientée aspect (AOP) créé
pour la programmation en langage java.
Tout programme java est comaptible AspectJ, permet de déclarer des
instruction spéciales.
Intègre les déclarations inter-types pour introduire des méthodes, champs ou
interfaces à des classes existantes depuis aspects.
Exemple: Ajouter la methode acceptVisitor() à la classe Point.
23
Spring roo et AspectJ
Roo est basé sur l’AOP à travers le framework AspectJ.
Le code généré est séparé en un fichier souche minimaliste et en plusieurs
fichiers d’aspects qui sont assemblés par le processeur AspectJ .
Cette séparation rend possible la génération du code et l’écriture manuelle en
parallèle.
Voici un exemple de souche de code :
Les tags de type @RooXXX (annotations)
ne persiste pas dans le bytcode et permettent
d’effectuer le lien avec les aspects au moment
de la compilation.
24
•@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.
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 Roo Shell, pour que celui-ci
s’occupe du reste : il génère simplement des fichiers .aj pour compléter le code.
Annotations du Spring roo :
26
Processus d’un compiler AspectJ:
Le compiler AspectJ va se charger de lire les fichiers Java et AspectJ pour former un
fichier .class.
Plan
Motivation
Spring roo et Aspectj
Spring roo par l’exemple
Présentation de Spring roo
Configuration de Spring roo
Les commandes avec Spring roo
Exécution de l’exemple
27Conclusion
28
Commandes Spring roo
Les Commandes de base :
• hint : connaitre les actions possibles à l’instant présent.
• help : Affiche l’aide du systeme.
• jpa setup : installer ou mettre à jour une nouvelle persistante JPA avec un
fournisseur (Hibernate par exemple).
• entity jpa : créer les objets du domaine c une entité persistante
• field: Ajouter des champs aux objets du domaine
• filed reference : créer une relation entre les objets du domaine.
• filed set : ajouter une relation entre les objets du domaine.
• web mvc setup : Ajouter les éléments pour utiliser Spring mvc (tags, jspx,
webmvc.xml,…)
• web mvc all : Générer les contrôleurs et tous les web artifacts
• perform tests : Lancer les tests d’ intégrations.
A voir sur STS !
Démonstration
29
Plan
Motivation
Configuration de Hibernate
Présentation de Hibernate
Object Relational Mapping
Hibernate par l’exemple
Les requêtes avec Hibernate
Conclusion
30
Exécution de l’exemple
La productivité: code généré sur des fichiers séparés, indépendant
du projet, et incrémental.
La simplification : de nombreuses ligne de commandes sont simple
a apprendre de plus ont suggérées a l’aide de l’auto complétude.
La performance : l’optimisation des commandes, rapide, exécution
performante non affectée par roo .
La Portabilité : open source (gratuit), et applicable sur les Ses,
compatible avec d’autres technologies java ee.
31
Conclusion
32
Conclusion
Productivité
Simplification
Performance
Portabilité
Spring roo est une révolution dans le monde développent java, c’est
une passerelle efficace entre la rapidité et l’efficacité rend Java EE
facile à utiliser .
GitHub :
https://github.com/DISID/gvnix-samples/tree/master/quickstart-
app#create-a-new-project/ [1,2,…,8] Last updated : [28/12/2016].
Spring Framework:
http://docs.spring.io/spring-roo/reference/html/beginning.html [9,…,21]
Last visited : [12/07/2017].
Igm.univ:
http://igm.univ-
mlv.fr/~dr/XPOSE2010/SpringRoo_CERQUEIRA_David/index.html
[**] Last visited : [12/07/2017].
Autres :
Lynda,Udemy,Easy-b, OppenClassrooms, etc.
33
Références
Merci pour votre
attention