Tutoriel Spring 4 : injection dépendances

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.

PNG - 51.3 ko
spring-sts-injection-0

L’écran suivant apparaît :

PNG - 75.9 ko
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

PNG - 5 ko
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

PNG - 27.2 ko
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

PNG - 27.9 ko
tutoriel-spring-3-sts-objis-injection-dependances-7

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

- Menu : File/New/Spring Bean Definition

PNG - 112 ko
tutoriel-spring-3-sts-objis-injection-dependances-8

L’écran suivant apparaît :

PNG - 20.3 ko
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...

PNG - 7.1 ko
tutoriel-spring-3-sts-objis-injection-dependances-12

...avec comme contenu les lignes suivantes :

PNG - 12 ko
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 :

PNG - 13.8 ko
tutoriel-spring-3-sts-objis-injection-dependances-14

ce qui donne ceci :

PNG - 12.4 ko
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>

PNG - 23.5 ko
tutoriel-spring-3-sts-objis-injection-dependances-16

- Idem pour sélectionner l’attribut ’id’...

PNG - 74.3 ko
tutoriel-spring-3-sts-objis-injection-dependances-17

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

PNG - 13.1 ko
tutoriel-spring-3-sts-objis-injection-dependances-18

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

PNG - 15.4 ko
tutoriel-spring-3-sts-objis-injection-dependances-19

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

PNG - 16.9 ko
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 )

PNG - 43 ko
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

PNG - 5 ko
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’.

PNG - 22.4 ko
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.

PNG - 5 ko
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.

PNG - 20 ko
tutoriel-spring-3-sts-objis-injection-dependances-26bis

- Expliquez.

Partie 6 : client

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

PNG - 65.1 ko
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

PNG - 11.8 ko
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

PNG - 8.2 ko
tutoriel-injection-dependances-vue-sts-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

Zip - 2.6 ko
demospringinjectionmaven

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]

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.

Devenez certifié ’Développeur Concepteur Java’

Exprimez-vous comme un développeur professionnel. Utilisez les bons mots au bon moment. Concevez et développez avec assurance des applications Java Web Mobile. Rassurez vos futurs employeurs et clients. Devenez Certifié ’Développeur Concepteur Java’ Objis. + d’informations.

PNG - 214.3 ko
formation-java-distance-objis-3