Vous êtes sur la page 1sur 5

Institut Galile

Anne 2014-2015

LEE
Master 2 Informatique

TP SPRING
Rsum
Lobjectif de ce TP est dtre capable de raliser une application Java de gestion de location de vhicules,voiture
ou camion, laide du framework Spring. Il sagit de grer des individus et un parc de vhicules. Lapplication devra
permettre, entre autres, de :
de lister les vhicules du parc
de lister les individus ayant lou un vhicule
de permettre des individus demprunter et de rendre des vhicules

Pr-requis

1.1

Lenvironnement de dveloppement

Pour ce TP, lenvironnement de dveloppement utilis est Netbeans, entre autre pour le fait que lIDE intgre le
moteur de base de donnes Derby. Cet environnement est disponible dans les salles de TP de Galile. Pour le chapitre
JDBC, il est ncessaire dutiliser la base Derby intgre Glassfish. 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 ncessaires

Les librairies ncessaires sont tlchargeables cette adresse :


https ://lipn.univ-paris13.fr/fortier/Enseignement/Spring/TP/
Il sagit :
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 daccder aux donnes

1.3

La base de donnes

On utilise une base de donnes derby, installe avec Glassfish. Avant tout, il faut crer la base de nom "location",
lutilisateur "location" et comme mot de passe "mdp" (par exemple) Voila les requtes SQL de base excuter pour
crer les schma et la premire 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 tests via des classes Main, mais on prfrera utiliser des tests unitaires, dj intgrs
dans lenvironnement Netbeans (Cf. Annexes).

Etape 1 : Une premire application Spring

Le but de cette mini-application est de crer des objets dont les proprits initiales sont stockes dans le fichier de
configuration de Spring. Ce travail sappuye sur le chapitre "Bean" du cours.
Crer un projet Java
Dans les proprits du projet, ajouter toutes les librairies Spring ncessaires (Cf. pr-requis)
Crer un package metier dans lequel se trouve une classe de nom Personne qui possde les attributs :
private String nom ; // nom de lindividu
private int age ; // age de lindividu
Crer les accesseurs de la classe Personne
Ajouter les 3 mthodes suivantes :
TP/BEAN/src/metier/Personne.java
// Affichage des informations de lindividu
public String toString() {
return "nom=[" + this.nom + "], age=[" + this.age + "]";
}
// Methodes appelees lors de linitialisation/suppression du bean
public void init() {
System.out.println("init personne [" + this.toString() + "]");
}
public void close() {
System.out.println("destroy personne [" + this.toString() + "]");
}

En sappuyant sur le cours, crer le fichier de proprits applicationContext.xml la racine des sources du
projet (ou ailleurs dans le Classpath)
En sappuyant sur le cours, crer une classe Main la racine des sources permettant de lire le fichier de
configuration de Spring et dafficher les informations.
Vrifier le comportement de lapplication
Ajouter dans la configuration de Spring un 2e`me bean personne2
Ajouter dans la classe de test Main plusieurs appels daffichage de personne2
Analyser les rsultats de lexcution : crations dobjets, appels de init(), close()
Crer une classe voiture possdant les attributs marque, type et un attribut emprunteur de type Personne.
En plus du constructeur par dfaut, crer un constructeur de la forme :
Cette fois-ci, la mthode daffichage 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 rsultats de lexcution : crations dobjets, appels de init(), close()

IoC
Il sagit prsent de mettre en exergue les avantages de linversion de contrle offert par Spring.
Dans un nouveau projet Java, crire les 4 classes de ltude de cas simple du cours portant sur la location de
vhicules
Ecrire la classe de tests Main et constater le bon fonctionnement de lapplication, en modifiant le type de
vhicule
Dans un nouveau projet, ajouter lintgration de Spring (modification de la classe Personne, applicationContext,
Main...)
Analyser/comparer les rsultats de lexcution

AOP : Gestion des journaux

Le but de cette mini-application est de crer un systme de gestion des journaux en associant Spring la programmation par aspect.
Crer un projet Java en important toutes les librairies Spring disponibles
Ecrire lexemple du cours sans AOP : classe Personne, configuration Spring, et classe de test
Vrifier les rsultats de lexcution
Intgrer les aspects viqus en cours dans la configuration Spring
Ecrire la classe MonLogger
Analyser/comparer les rsultats de lexcution
Modifier la classe MonLogger pour adapter vos journaux (criture dans un fichier de logs par exemple)

JDBC : Avantages de Spring

Le but de cette mini-application est de vrifier les avantages de Spring JDBC : la sparation des couches, la gestion
des connexions...
Il est ncessaire dutiliser la base de donnes Derby (Cf. pr-requis).

5.1

Mthode classique

Crer un projet Java en important toutes les librairies Spring disponibles


En vous inspirant des exercices prcdent, crer la classe Personne
A laide du cours, crer la classe Derby de connexion la base
Ecrire les classes dException AgeNegativeException et PersonneNotFoundException
Ajouter une mthode dinsertion dune personne
Tester le projet, les mthodes daccs aux donnes (find, update...), les exeptions

5.2

JDBCTemplate

Crer les packages dao et mtier


A laide du cours, crire les interfaces IPersonneDao, IPersonneMetier, et leurs implmentations
Ecrire le fichier de configuration de Spring
Ecrire la classe de tests permettant de valider la mise jour dun individu
Ajouter les mthodes de listing et dinsertion dune personne

Application de gestion de location de vhicules

Cette application se base sur les exercices prcdents.


Les donnes personnes et vhicules sont stockes dans une base Derby. Dans un premier temps et pour simplifier la
mise en oeuvre, les vhicules nont pas besoin dtre typs (voiture, camion, moto), et ils ne sont lous qu un seul
individu la fois.
Rcuprer et lancer le projet contenu dans larchive Application.tar.gz
Crer linterface dao IVehiculeDao contenant par exemple les prototypes louer(), retourner(), is_loue()
Crer linterface mtier IVehiculeMetier permettant de grer les vhicules
Implmenter les classes/mthodes ncessaires la gestion :
dinsertion/suppression de voitures
demprunt/retour de voitures
de lister les voitures du parc (loues ou non)
de lister les individus ayant lous une voiture
...
Crer les classes de tests avec JUnit
Crer une application interactive en ligne de commande permettant deffectuer chaque opration
Intgrer un systme non intrusif de journalisation des oprations prcdentes

Hibernate

Cette partie ncessite davoir dj utilis le framework


paris13.fr/fortier/Enseignement/Hibernate/).
De plus, la base de donns location doit tre en place (Cf. pr-requis)

Hibernate

(Cf.

http

://lipn.univ-

Crer un projet Spring avec les librairies ncessaires


Ajouter les librairies Hibernate
Crer les fichiers de mapping Personne et Voiture ( la main ou laide des outils hibernate intgrs Spring)
A laide du cours, crer le fichier de configuration de Spring en intgrant les proprits dHibernate
Ecrire les interfaces mtier et DAO permettant dans un premier deffectuer des recherches de personnes
Implmenter les interfaces en utilisant le template Spring Hibernate
Crer les tests unitaires testant les fonctionnalits de recherche de personnes
Continuer le projet en intgrant les fonctionnalits de gestion de location

Annexes

8.1

Tests unitaires - JUnits

Un test unitaire est une mthode permettant de tester une partie code (appel unit). Le test consiste a vrifier
que le retour de lexcution de la portion de code correspond a ce que lon attend.
Il est excut indpendamment du programme en crant un environnement dexcution spcifique la portion de
code. Cela permet deviter de devoir recompiler tout un logiciel pour vrifier la correction dun bug des fois assez
difficile dclencher "manuellement" ou pour tester des fonctionnalits profondes dans le logiciel.
JUnits est un framework pour gnrer des tests unitaires qui est intgr Netbeans.
Pour gnrer un test, il suffit de cliquer "Outils" "Create Junits Tests" (slectionnez Junit 4.x), puis de choisir la
classe contenant les mthodes tester.
Tous les tests de chaque mthode sont crs. Il suffit prsent de modifier ces tests pour vrifier la validit des
mthodes.
TP/JUNITS/test/ClasseTest.java
@Test
public void testFaireQuelqueChose() {
System.out.println("Methode faireQuelqueChose : uppercase()");
// Creation dune instance de la classe testee
Classe instance = new Classe();
// Initialisation du resultat attendu
String expResultat="TEST2";
// Lancement du test de la methode
String resultat = instance.faireQuelqueChose("test");
// Resultat du test de la methode faireQuelqueChose
assertEquals(expResultat,resultat);
}

8.2

Installer Netbeans et Glassfish

Dans le cas o lon se trouve sur une machine ne disposant pas de Netbeans ou Glassfish, il peut suivre les
procdures suivantes qui lui permettront deffectuer le TP.
Pour netbeans, dcompiler larchive situe :
http ://www-lipn.univ-paris13.fr/ fortier/Enseignement/Applications/netbeans-6.7.1_fr.tar.gz
Lapplication se lance avec le commande bin/netbeans (pensez rgler les droits dexecution). Pour glassfish, charger
larchive 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