Avec Objis, spécialiste formation Spring, maîtrisez par la pratique l’injection de dépendances avec la version 4 de Spring. Comprenez alors ce qui fait le succès de Spring depuis 10 ans. Comprenez la notion de conteneur léger. Identifier un lien entre Spring et la spécification CDI)
Prérequis, outils et versions
Installation SpringSource ToolSuite (STS)
Objectifs
Déclarer dans le conteneur Spring des javabeans indépendants
Comprendre le chargement du conteneur Spring
Mettre en œuvre l’injection de dépendances
Utiliser les vues STS, dont la vue graphe.
Programme
Partie 1 : création projet Spring avec STS
Partie 2 : codage des beans
Partie 3 : création fichier définitions de beans
Partie 4 : déclaration des beans dans le conteneur spring
Partie 5 : librairies du projet spring
Partie 6 : codage du client
Partie 7 : vues Spring
Partie 8 : pour aller plus loin
Durée
2h.
Partie 1 : création projet Spring
Dans cette partie, vous créez un ‘projet Spring’ à l’aide de l’environnement de développement SpringSource ToolSuite (STS).
Dans STS, File/New/Spring Project.
L’écran suivant apparaît :
choisissez comme type de projet Spring ‘Simple Java’ dans ‘Simple projects’
Entrez comme nom du projet : ‘demospringinjection’. Laissez les autres options.
Appuyez sur le bouton Finish. Voici ce qui apparaît dans Eclipse
REMARQUE : le ‘S’ en bleu à gauche du projet signifie que c’est un projet Spring. C’est la marque de projet Spring ou de projets ayant acquis des ‘Capacités Spring’.
REMARQUE : lorsque vous souhaitez donner à un projet non Spring des ‘capacités Spring’, cliquez droit sur le projet puis ‘Spring Tools/Add Spring Project Nature’.
Partie 2 : codage des beans
Dans cette partie, vous crééz deux Javabeans indépendants l’un de l’autre.
Dans le projet ‘demospring’, créez un package com.objis.spring.demo
Création du bean Developpeur
Créez la classe Developpeur, comme ci-dessous
CONSEIL : faîtes générer les Getters / Setters par STS : après la déclaration des attributs ‘nom’ et ‘anneesExperience’, cliquez droit sur le source puis ‘/Source/generate Getters and Setters’ pour terminer la création de la classe.
Création du bean SocieteDevLogiciel
Créez la classe SocieteDevLogiciel, comme ci-dessous
Partie 3 : Création fichier définitions de beans
Menu : File/New/Spring Bean Definition
L’écran suivant apparaît :
Donnez le nom ‘demo-beans.xml’ au fichier de définition de beans. Puis cliquez sur Finish.
Eclipse génère alors le fichier…
…avec comme contenu les lignes suivantes :
Expliquez
QUESTION : montrez, en utilisant les préférences Spring de STS, qu’il est possible de spécifier un format spécifique de XSD pour la validation du fichier, en fonction de la version de Spring (Spring 2, Spring 3.0, Spring 4.0…)
En déduire un contenu de demo-spring.xml spécifique à Spring 4.0
Ajoutez des lignes au fichier :
ce qui donne ceci :
Reste désormais à ajouter la déclaration des deux beans codés plus haut : Developpeur et SocieteDevLogiciel
Partie 4 : Déclaration des beans dans spring
Editeur XML et complétion de code
Déclarez un Développeur Olivier possédant 7 ans d’expériences.
Pour cela , suite à un CTRL + Espace dans la balise <
Idem pour sélectionner l’attribut ‘id’…
et l’attribut ‘class’ de la balise ‘bean’
Injectez les propriétés ‘nom’ et ‘anneesExpereince’ de façon statique :
Remarquez les 2 façons ( attribut ou balise) de déclarer une propriété du bean.
ça y est, la déclaration du bean Developpeur est terminée.
A VOUS DE JOUER : Déclarez dans le même fichier de configuration demo-beans.xml un deuxième développeur nommé Franck, plus expérimenté qu’Olivier (10 ans d’expérience) et possédant dans le conteneur Spring un id=’chefDeveloppeur’.
A VOUS DE JOUER : Déclarez dans le même fichier de configuration demo-beans.xml une société de développement logicielle possédant les 2 développeurs déja déclarés, et possédant un id=’societeDevLogiciel’. Utilisez l’attribut ‘ref’ de la balise bean en pointant sur l’id de chacun des beans.
Partie 5 : librairies du projet spring
Pour démarrer un projet spring 4 minimal, 6 dépendances sont à ajouter.
— 4 dépendances de la distribution Spring : core + beans + expression+context
Ces dépendances se trouvent dans le répertoire ‘dist’ du répertoire Spring comme ci-dessous (après avoir dézippé zip spring-framework-4.1.2.RELEASE téléchargé ici )
— 2 dépendances hors distribution Spring : log4j (téléchargez) + commons-logging (téléchargez)
créez un répertoire ‘lib’ à la racine du projet
Copiez-collez dans lib les 6 dépendances
Attention : actuellement ces librairies ne sont pas prises en compte par Eclipse…nous allons y remédier.
Configuration du build Path dans Eclipse
Cliquez-droit sur le projet –> configure build path
Dans l’écran qui apparaît, sélectionnez l’onglet ‘Libraries’ et cliquez sur le boutton ‘Add jars’ qui permet d’ajouter des jars relatifs au projet, comme ceux que nous venons d’ajouter dans ‘lib’.
Naviguez jusqu’au répertoire ‘lib’ du projet et sélectionnez tous les 6 jars. Validez.
L’écran suivant met en évidence que les jars sont biens inclus dans le classpath.
La configuration des librairies du projet est terminée.
configuration log4j
Créer à la racine ‘src’ le fichier log4j.xml
Ajoutez dans le fichier le contenu suivant.
Expliquez.
Partie 6 : client
Codez et analysez le contenu de la classe Principale ‘DemoApp’ suivante :
Expliquez les lignes de code de la méthode main(). En particulier, mettre en évidence les 3 étapes suivantes :
— 1.Chargement du conteneur Spring
— 2.Récupération d’un bean du conteneur
— 3.Utilisation du bean avec injection de dépendances
Résultat
Après clic droit/Run as/ Java Application, vous obtenez sur la console ceci
Expliquez
Partie 7 : vues Spring
Vues Spring
Mettez en évidence les beans Spring dans les vues suivantes :
— Vue Spring Explorer
Quel avantage pour cette vue ?
— Vue Dependencies Graph
Partie 8 (Optionnel) : mavenisation du projet
Proposer une version mavenisée de ce projet :
1) créez un projet Maven type ‘quickstart’
2) ajoutez une dépendance au framework spring dans la section ‘dépendencies’ du pom.xml
3) ajoutez le code java du projet dans src/main/java
4) ajoutez les fichiers de configuration (log4j, spring) dans src/main/resources
5) Compilez (mvn compile)
6) Packagez (mvn package)
7) Exécutez l’application –> conseil : utilisez le plugin ‘exec’
CORRECTION
Téléchargez le projet maven suivant :
notez la configuration du fichier pom.xml avec le plugin ‘exec’ et la classe principale de l’application
Positionnez vous dans le répertoire et lancez la commande : mvn package exec:java
Expliquez
TELECHARGEZ la version suivante incluant une approche ‘full annotation’ (DemoAppJavaConfig)
Expliquez le code suivant
Conclusion
Dans ce tutoriel, vous avez pratiqué la mise en œuvre du concept clé N°1 de Spring :l’injection de dépendances.
Partie 8 : Pour aller plus loin
Pour la suite de votre apprentissage , 3 propositions :
1) Approfondir votre connaissance du conteneur léger Spring à travers des exercices de paramétrage du conteneur ->article61] et la mise en oeuvre de l’approche ‘full annotation‘
2) Découvrir le framework Weld (un conteneur léger concurrent de Spring) l’implémentation de référence du standard Java pour l’injection de dépendances : CDI (Context & Dependency Injection)
3) Découvrir le deuxième atout fort de Spring (en plus de l’injection de dépendances) : la programmation orientée Aspect.