tp_spring

5
Institut Galilée LEE Année 2014-2015 Master 2 Informatique TP SPRING Résumé L’objectif de ce TP est d’être capable de réaliser une application Java de gestion de location de véhicules,voiture ou camion, à l’aide du framework Spring. Il s’agit de gérer des individus et un parc de véhicules. L’application devra permettre, entre autres, de : de lister les v éhicul es du parc de lister les individu s ayan t loué un véhi cule de permettre à des individus d’emp runter et de rendre des véhicules 1 Pr é-r equis 1.1 L’en vir onnemen t de déve loppemen t Pour ce TP, l’environnement de développement utilisé est Netbeans, entre autre pour le fait que l’IDE intègre le moteur de base de données Derby. Cet environnement est disponible dans les salles de TP de Galilée. Pour le chapitre JDBC, il est nécessaire d’utiliser la base Derby intégrée à Glasssh. Dans tous les cas, le lecteur pourra trouver une version Linux de ces applications à cette adresse : https ://lipn.univ-paris13.fr/ fortier/Enseignement/Applications/ 1.2 Les librairies nécessa ires Les librairies nécessaires sont téléchargeables à cette adresse : https ://lipn.univ-paris13.fr/fortier/Enseignement/Spring/TP/ Il s’agit : de certai nes librairies Spring : org.springframew ork.context -3.0.6.RELEASE.jar org.springframew ork.core-3.0.6.RELE ASE.jar org.springframew ork.beans-3.0.6.RELEASE.jar — ... de la librairie Apac he de journalisation : — commons-logging-1.1.1.jar de la librai rie Derby permett ant d’acc éder aux données 1.3 La base de données On utilise une base de données derby, installée avec Glasssh. Avant tout, il faut créer la base de nom "location", l’utilisateur "location" et comme mot de passe "mdp" (par exemple) Voila les requêtes SQL de base à exécuter pour créer les schéma et la première table : create schema locatio n ; create table locatio n .perso nne ( personne_id  integer generat ed always  as identity prim ary key , nom varchar(20), age  numeric ); insert into locatio n .personne (nom,ag e) values  (’michael’,  25); insert into locatio n .perso nne (nom,ag e) values  (’christophe’ ,  30); 1.4 T est s unitai res Les exercices peuvent être testés via des classes Main, mais on préfèrera utiliser des tests unitaires, déjà intégrés dans l’environnement Netbeans (Cf. Annexes). 1

description

spring

Transcript of tp_spring

Page 1: tp_spring

7/21/2019 tp_spring

http://slidepdf.com/reader/full/tpspring 1/5

Institut Galilée LEEAnnée 2014-2015 Master 2 Informatique

TP SPRING

Résumé

L’objectif de ce TP est d’être capable de réaliser une application Java de gestion de location de véhicules,voiture

ou camion, à l’aide du framework Spring. Il s’agit de gérer des individus et un parc de véhicules. L’application devra

permettre, entre autres, de :

— de lister les véhicules du parc

— de lister les individus ayant loué un véhicule

— de permettre à des individus d’emprunter et de rendre des véhicules

1 Pré-requis

1.1 L’environnement de développement

Pour ce TP, l’environnement de développement utilisé est Netbeans, entre autre pour le fait que l’IDE intègre lemoteur de base de données Derby. Cet environnement est disponible dans les salles de TP de Galilée. Pour le chapitreJDBC, il est nécessaire d’utiliser la base Derby intégrée à Glassfish. Dans tous les cas, le lecteur pourra trouver uneversion Linux de ces applications à cette adresse : https ://lipn.univ-paris13.fr/∼fortier/Enseignement/Applications/

1.2 Les librairies nécessaires

Les librairies nécessaires sont téléchargeables à cette adresse :

https ://lipn.univ-paris13.fr/∼fortier/Enseignement/Spring/TP/

Il s’agit :— de certaines librairies Spring :

— org.springframework.context-3.0.6.RELEASE.jar

— org.springframework.core-3.0.6.RELEASE.jar— org.springframework.beans-3.0.6.RELEASE.jar— ...

— de la librairie Apache de journalisation :— commons-logging-1.1.1.jar

— de la librairie Derby permettant d’accéder aux données

1.3 La base de données

On utilise une base de données derby, installée avec Glassfish. Avant tout, il faut créer la base de nom "location",l’utilisateur "location" et comme mot de passe "mdp" (par exemple) Voila les requêtes SQL de base à exécuter pourcréer les schéma et la première table :

create schema location;

create table location.personne (personne_id   integer generated   always   as identity primary key,

nom   varchar(20),

age   numeric);

insert into location.personne (nom,age)   values   (’michael’,   25);

insert into location.personne (nom,age)   values   (’christophe’,   30);

1.4 Tests unitaires

Les exercices peuvent être testés via des classes Main, mais on préfèrera utiliser des tests unitaires, déjà intégrésdans l’environnement Netbeans (Cf. Annexes).

1

Page 2: tp_spring

7/21/2019 tp_spring

http://slidepdf.com/reader/full/tpspring 2/5

2 Etape 1 : Une première application Spring

Le but de cette mini-application est de créer des objets dont les propriétés initiales sont stockées dans le fichier deconfiguration de Spring. Ce travail s’appuye sur le chapitre "Bean" du cours.

— Créer un projet Java— Dans les propriétés du projet, ajouter toutes les librairies Spring nécessaires (Cf. pré-requis)— Créer un package « metier » dans lequel se trouve une classe de nom Personne qui possède les attributs :

— private String nom ; // nom de l’individu— private int age ; // age de l’individu

— Créer les accesseurs de la classe Personne— Ajouter les 3 méthodes suivantes :

TP/BEAN/src/metier/Personne.java

// Affichage des informations de l’individu public   String   toString() {

return   "nom=["   +   this.nom   +   "], age=["  +   this.age   +   "]";}// Methodes appelees lors de l’initialisation/suppression du bean public   void   init() {

System .out.println("init personne ["   +   this.toString() +   "]");}public   void   close() {

System .out.println("destroy personne ["   +   this.toString() +   "]");}

— En s’appuyant sur le cours, créer le fichier de propriétés applicationContext.xml à la racine des sources duprojet (ou ailleurs dans le Classpath)— En s’appuyant sur le cours, créer une classe Main à la racine des sources permettant de lire le fichier de

configuration de Spring et d’afficher les informations.— Vérifier le comportement de l’application— Ajouter dans la configuration de Spring un  2

eme bean personne2— Ajouter dans la classe de test Main plusieurs appels d’affichage de personne2

→ Analyser les résultats de l’exécution : créations d’objets, appels de init(), close()

— Créer une classe voiture possédant les attributs marque, type et un attribut emprunteur de type Personne.— En plus du constructeur par défaut, créer un constructeur de la forme :— Cette fois-ci, la méthode d’affichage devient :

TP/BEAN/src/metier/Voiture.java

public   String   toString() {return   "Voiture : marque=["   +   this. marque   +   "] type=["   +   this.type

+   "] emprunteur=["  +this.emprunteur   +   "]";}

— Ajouter au fichier de configuration Spring le bean "voiture1" du cours— Modifier la classe Main pour afficher le bean voiture1

→ Analyser les résultats de l’exécution : créations d’objets, appels de init(), close()

3 IoC

Il s’agit à présent de mettre en exergue les avantages de l’inversion de contrôle offert par Spring.— Dans un nouveau projet Java, écrire les 4 classes de l’étude de cas simple du cours portant sur la location de

véhicules— Ecrire la classe de tests Main et constater le bon fonctionnement de l’application, en modifiant le type de

véhicule— Dans un nouveau projet, ajouter l’intégration de Spring (modification de la classe Personne, applicationContext,

Main...)

→ Analyser/comparer les résultats de l’exécution

2

Page 3: tp_spring

7/21/2019 tp_spring

http://slidepdf.com/reader/full/tpspring 3/5

4 AOP : Gestion des journaux

Le but de cette mini-application est de créer un système de gestion des journaux en associant Spring à la program-mation par aspect.

— Créer un projet Java en important toutes les librairies Spring disponibles— Ecrire l’exemple du cours sans AOP : classe Personne, configuration Spring, et classe de test

→ Vérifier les résultats de l’exécution

— Intégrer les aspects éviqués en cours dans la configuration Spring

— Ecrire la classe MonLogger

→ Analyser/comparer les résultats de l’exécution

— Modifier la classe MonLogger pour adapter vos journaux (écriture dans un fichier de logs par exemple)

5 JDBC : Avantages de Spring

Le but de cette mini-application est de vérifier les avantages de Spring JDBC : la séparation des couches, la gestiondes connexions...Il est nécessaire d’utiliser la base de données Derby (Cf. pré-requis).

5.1 Méthode classique

— Créer un projet Java en important toutes les librairies Spring disponibles— En vous inspirant des exercices précédent, créer la classe Personne— A l’aide du cours, créer la classe Derby de connexion à la base— Ecrire les classes d’Exception AgeNegativeException et PersonneNotFoundException— Ajouter une méthode d’insertion d’une personne

→ Tester le projet, les méthodes d’accès aux données (find, update...), les exeptions

5.2 JDBCTemplate

— Créer les packages dao et métier

— A l’aide du cours, écrire les interfaces IPersonneDao, IPersonneMetier, et leurs implémentations— Ecrire le fichier de configuration de Spring— Ecrire la classe de tests permettant de valider la mise à jour d’un individu— Ajouter les méthodes de listing et d’insertion d’une personne

6 Application de gestion de location de véhicules

Cette application se base sur les exercices précédents.Les données ’personnes’ et ’véhicules’ sont stockées dans une base Derby. Dans un premier temps et pour simplifier lamise en oeuvre, les véhicules n’ont pas besoin d’être typés (voiture, camion, moto), et ils ne sont loués qu’à un seulindividu à la fois.

— Récupérer et lancer le projet contenu dans l’archive Application.tar.gz

— Créer l’interface dao IVehiculeDao contenant par exemple les prototypes louer(), retourner(), is_loue()— Créer l’interface métier IVehiculeMetier permettant de gérer les véhicules— Implémenter les classes/méthodes nécessaires à la gestion :

— d’insertion/suppression de voitures— d’emprunt/retour de voitures— de lister les voitures du parc (louées ou non)— de lister les individus ayant loués une voiture— ...

— Créer les classes de tests avec JUnit— Créer une application interactive en ligne de commande permettant d’effectuer chaque opération— Intégrer un système non intrusif de journalisation des opérations précédentes

3

Page 4: tp_spring

7/21/2019 tp_spring

http://slidepdf.com/reader/full/tpspring 4/5

7 Hibernate

Cette partie nécessite d’avoir déjà utilisé le framework Hibernate (Cf. http ://lipn.univ-paris13.fr/∼fortier/Enseignement/Hibernate/).De plus, la base de donnés location doit être en place (Cf. pré-requis)

— Créer un projet Spring avec les librairies nécessaires— Ajouter les librairies Hibernate— Créer les fichiers de mapping Personne et Voiture (à la main ou à l’aide des outils hibernate intégrés à Spring)— A l’aide du cours, créer le fichier de configuration de Spring en intégrant les propriétés d’Hibernate— Ecrire les interfaces métier et DAO permettant dans un premier d’effectuer des recherches de personnes— Implémenter les interfaces en utilisant le template Spring Hibernate— Créer les tests unitaires testant les fonctionnalités de recherche de personnes— Continuer le projet en intégrant les fonctionnalités de gestion de location

4

Page 5: tp_spring

7/21/2019 tp_spring

http://slidepdf.com/reader/full/tpspring 5/5

8 Annexes

8.1 Tests unitaires - JUnits

Un test unitaire est une méthode permettant de tester une partie code (appelé unité). Le test consiste a vérifierque le retour de l’exécution de la portion de code correspond a ce que l’on attend.Il est exécuté indépendamment du programme en créant un environnement d’exécution spécifique à la portion decode. Cela permet d’eviter de devoir recompiler tout un logiciel pour vérifier la correction d’un bug des fois assezdifficile à déclencher "manuellement" ou pour tester des fonctionnalités profondes dans le logiciel.

JUnits est un framework pour générer des tests unitaires qui est intégré à Netbeans.Pour générer un test, il suffit de cliquer "Outils"  →  "Create Junits Tests" (sélectionnez Junit 4.x), puis de choisir laclasse contenant les méthodes à tester.Tous les tests de chaque méthode sont créés. Il suffit à présent de modifier ces tests pour vérifier la validité desméthodes.

TP/JUNITS/test/ClasseTest.java

@Testpublic   void   testFaireQuelqueChose() {

System .out.println("Methode faireQuelqueChose : uppercase()");// Creation d’une instance de la classe testee

Classe instance   =   new   Classe();// Initialisation du resultat attendu String expResultat="TEST2";// Lancement du test de la methodeString resultat   =   instance.faireQuelqueChose("test");

// Resultat du test de la methode faireQuelqueChoseassertEquals(expResultat,resultat);}

8.2 Installer Netbeans et Glassfish

Dans le cas où l’on se trouve sur une machine ne disposant pas de Netbeans ou Glassfish, il peut suivre lesprocédures suivantes qui lui permettront d’effectuer le TP.Pour netbeans, décompiler l’archive située à :

http ://www-lipn.univ-paris13.fr/ fortier/Enseignement/Applications/netbeans-6.7.1_fr.tar.gz

L’application se lance avec le commande bin/netbeans (pensez à régler les droits d’execution). Pour glassfish, charger

l’archive disponible :

http ://www-lipn.univ-paris13.fr/ fortier/Enseignement/Applications/glassfish-installer-v2.1.1-b31g-linux-ml.jar

Entrez les commandes :— java -Xmx256m -jar glassfish-installer-v2.1.1-b31g-linux-ml.jar— cd glassfish— chmod -R +x lib/ant/bin— ./lib/ant/bin/ant -f setup.xml

5