Tutoriel Spring 4 : injection dépendances

/////Tutoriel Spring 4 : injection dépendances

graphe.pngAvec 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.

spring-sts-injection-0

L’écran suivant apparaît :

spring-sts-injection

 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

tutoriel-spring-3-sts-objis-injection-dependances-5

 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

tutoriel-spring-3-sts-objis-injection-dependances-6

 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

tutoriel-spring-3-sts-objis-injection-dependances-7

Partie 3 : Création fichier définitions de beans

 Menu : File/New/Spring Bean Definition

tutoriel-spring-3-sts-objis-injection-dependances-8

L’écran suivant apparaît :

tutoriel-spring-3-sts-objis-injection-dependances-9

 Donnez le nom ‘demo-beans.xml’ au fichier de définition de beans. Puis cliquez sur Finish.

Eclipse génère alors le fichier…

tutoriel-spring-3-sts-objis-injection-dependances-12

…avec comme contenu les lignes suivantes :

tutoriel-spring-3-sts-objis-injection-dependances-13

 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 :

tutoriel-spring-3-sts-objis-injection-dependances-14

ce qui donne ceci :

tutoriel-spring-3-sts-objis-injection-dependances-15

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 <beans> ,sélectionnez la balise <bean>

tutoriel-spring-3-sts-objis-injection-dependances-16

 Idem pour sélectionner l’attribut ‘id’…

tutoriel-spring-3-sts-objis-injection-dependances-17

et l’attribut ‘class’ de la balise ‘bean’

tutoriel-spring-3-sts-objis-injection-dependances-18

 Injectez les propriétés ‘nom’ et ‘anneesExpereince’ de façon statique :

tutoriel-spring-3-sts-objis-injection-dependances-19

Remarquez les 2 façons ( attribut ou balise) de déclarer une propriété du bean.

tutoriel-spring-3-sts-objis-injection-dependances-20

ç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 )

librairies

— 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

libs-tp1

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’.

tutoriel-spring-3-sts-objis-injection-dependances-25

 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.

libs-tp1

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.

tutoriel-spring-3-sts-objis-injection-dependances-26bis

 Expliquez.

Partie 6 : client

 Codez et analysez le contenu de la classe Principale ‘DemoApp’ suivante :
test-tp1

 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

tutoriel-spring-3-sts-objis-injection-dependances-28

 Expliquez

Partie 7 : vues Spring

Vues Spring

Mettez en évidence les beans Spring dans les vues suivantes :

— Vue Spring Explorer

tutoriel-injection-dependances-vue-sts-spring-explorer

Quel avantage pour cette vue ?

— Vue Dependencies Graph

graphe.png

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 :

demospringinjectionmaven

notez la configuration du fichier pom.xml avec le plugin ‘exec’ et la classe principale de l’application

maven-exec-spring-app

Positionnez vous dans le répertoire et lancez la commande : mvn package exec:java

maven-exec-2

 Expliquez

TELECHARGEZ la version suivante incluant une approche ‘full annotation’ (DemoAppJavaConfig)

demospringinjectionmaven-v2

 Expliquez le code suivant

demo-spring-conteneur-javaconfig

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.

formation-java-distance-objis-3

2018-01-31T18:53:35+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java