Vous êtes sur la page 1sur 12

Systèmes distribués –J2EE

Injection de dépendance (IoD) avec Spring-Core


& projet Maven/Eclipse

Objectif : Injecter des objets dans d’autre objets avec Spring-IoC


Environnement : Eclipse IDE/Spring/Maven

1. Projet maven
2. Travailler avec repository maven :
Ø Dépendance avec spring-context
3. Configurer : pom
spring-ioc: Fonctionnement de Springn IoC repose sur 3 éléments clés:
4. La configuration (3 types) :
Ø XML pour lier les implémentations à leurs interfaces (cette partie du
cours)
Ø Les annotations
Ø A base de java
5. Les classes sont des beans et possèdent donc des getters et setters pour les
champs à injecter
6. L'injection en même est effectuée par un ApplicationContext de Spring
Etapes :

1. Modèle d’IoD à implémenter : Application de Fabrication des voitures/moteurs


2. Création du projet Maven et ajout de la dépendance Spring-Context (pom.xml)
3. Modèle : Implémentation des Classes & interfaces en respectant l’IoC
4. Application de test : AppFactory : Classe java avec main
Alors, comment l’IoC/IoD est faite par spring-IoC.

5. Spring IoC :
Ø ApplicationContext
Ø Fichier de configuration : Spring-config.xml (créer à l’aide de STS)

Professeur. Hind LAMHARHAR 1


Systèmes distribués –J2EE

1 Modèle à implémenter (CarFactoryIoC)

Le modèle de fabrication des voitures consiste à permettre à une entreprise de suivre l’évolution de
leurs applications si l’entreprise changera du domaine de fabrication des voitures d’une industrie des
voitures simples a la fabrication des voitures hybrides ou autres. L’application se compose de deux
interfaces : Voiture et Moteur et 5 classes comme indiqués sur le diagramme de classes UML.

La dépendance se représente via l’injection de l’objet Moteur dans la


fabrication des voitures.

Alors, comment l’IoC/IoD est faite par spring-IoC ???

Professeur. Hind LAMHARHAR 2


Systèmes distribués –J2EE

2 Projet Maven avec les dépendances

2.1 Créer un Projet Maven (SpringIoD), en suivant les étapes suivantes


a. Fileè new Maven Projectècocher « Simple Projet »/ default

b. Saisir les informations suivantes du projet :


1. Group Id : com.hightech
2. Artifacts : SpringIoD (nom du projet)
3. Name : IoD

Professeur. Hind LAMHARHAR 3


Systèmes distribués –J2EE

2.2 Ajouter les dépendances (pom,xml):


c. Aller a https://mvnrepository.com/
d. Chercher Spring framework
e. Sélectionner Spring Context

Copier les dépendances dans le fichier pom.xml entre <dependencies >…….</dependencies>

Professeur. Hind LAMHARHAR 4


Systèmes distribués –J2EE

3 Les classes et les interfaces

Professeur. Hind LAMHARHAR 5


Systèmes distribués –J2EE

Ajout des classes et les interfaces dans le package :


com.hightech.iod.car

Professeur. Hind LAMHARHAR 6


Systèmes distribués –J2EE

Professeur. Hind LAMHARHAR 7


Systèmes distribués –J2EE

4 Application de test

Création d’une classe java simple avec main qui permet d’appeler un objet de type voiture et
d’afficher l’ensemble des informations sur cette objet. La classe AppFactory est comme suit sans
application d’un pattern IoC, c.à.d., sans respect du principe (ouverture à l’extension/ Fermeture à la
modification)

Professeur. Hind LAMHARHAR 8


Systèmes distribués –J2EE

5 Spring IoC

5.1 Le conteneur d’IoC sur spring : l’interface ApplicationContext


L'ApplicationContext est une interface permettant d’obtenir différentes informations sur une
application.

Ø Elle hérite de l’interface BeanFactory qui définit les fonctionnalités de base du conteneur.
Le conteneur va vérifier la configuration qui lui est fournie à travers un fichier de configuration
(fichier xml ou fichier java). Le conteneur essaie selon la configuration de créer les instances. Spring
est capable de gérer n'importe quel bean. Seules quelques contraintes doivent être respectées pour
permettre à Spring de réaliser l'injection de dépendances s'il y en a. Chaque bean géré par Spring
possède un ou plusieurs identifiants uniques.
Spring propose plusieurs implémentations de l'interface ApplicationContext, on va voir les deux
suivates :

Ø ClassPathXmlApplicationContext : charge la définition du contexte à partir d'un fichier


XML contenu dans le classpath.
Ø AnnotationConfigApplicationContext : charge la définition du contexte à partir des
classes java avec annotation @Configuration.
Le fonctionnement du conteneur IoC : Interface ApplicationContext est comme suit:

1- Un fichier de configuration « ex. beans.xml » ou bien une classe de configuration (ex.


AppConfig), dont lesquels on déclare l’ensemble des beans.
Un bean c'est une classe java avec des méthodes : getters et setters.
Il est appelé aussi POJO (Plaint Object Java Object)

2- Le conteneur responsable du cycle de vie de ces beans (Bleu) va lire le fichier de configuration
(Gris) et ensuite il va créer l’ensemble des beans configurés (Vert).
3- Maintenant les beans sont prêts à utiliser.
4- L’application va appeler le conteneur (ApplicationContext) :

Professeur. Hind LAMHARHAR 9


Systèmes distribués –J2EE

a. Soit en implémentant la classe ClassPathXmlApplicationContext, s’il s’agit d’une


configuration xml
b. Soit en implémentation la classe AnnotationConfigApplicationContext s’il s’agit
d’une configuration basée sur java (java based configuration)
c. Ou bien en utilisant les annotations (@Component) avec un fichier xml. Voici une
illustration de ce cas ça marche pour une configuration java avec un scan sur un fichier
xml. Cet sacn permet d’identifier l’ensemble des classes qui sont des beans avec
l’annotation (@Component)

Professeur. Hind LAMHARHAR 10


Systèmes distribués –J2EE

5.2 1er cas : Fichier de configuration XML avec Implémentant de la classe


ClassPathXmlApplicationContext
voir package : configXML

1. Dans AppFactory, créer une instance du conteneur ApplicationContext avec la classe


ClassPathXmlApplicationContext.
2. Créer le fichier de configuration spring-config.xml:
– Deux beans voitureBean et moteurBean
– Le reste on va le voir en pratique.
3. Dans AppFactory, appeler votre bean

Figure 1. Application : AppFactory

Figure 2. Fichier de configuration : spingConfig.xml


5.3 2eme cas : Annotation avec XML :
Voir package configAnnotation

5.4 3eme cas : Configuration java en Implémentant la classse


AnnotationConfigApplicationContext
Voir package configJava

Professeur. Hind LAMHARHAR 11


Systèmes distribués –J2EE

Professeur. Hind LAMHARHAR 12

Vous aimerez peut-être aussi