Chapitre 3 : Spring et les design
Patterns
2022/2023 1
SPRING et Design Pattern
▪ Spring est orienté design pattern (patrons de conception)
▪ Pratiquement toutes les parties du framework sont issues d’une réflexion
simplificatrice et unificatrice basée sur l’utilisation des design patterns.
▪ Les plus populaires pattern utilisés en Spring:
- Singleton
- Inversion de contrôle
- Injection de dépendances
2022/2023 2
Patron : Singleton
▪ Un singleton est un objet unique dans un espace donné. Il est créé lors de sa première
utilisation pour être ensuite réutilisé.
▪ Objectif du Pattern singleton : Avoir une seule instance d’une classe et pouvoir l’accéder et
la manipuler facilement : une seule classe est nécessaire pour écrire ce motif
▪ Le schéma de classes du patron Singleton est très simple.
public class Soleil
{
private static Soleil instanceUnique = new Soleil();
private Soleil() { ... }
public static Soleil getInstance()
{ return instanceUnique; }
// ... }
Singleton : garantit qu’une classe ne possède qu’une seule instance, et
fournit un seul point d’accès à celle-ci.
2022/2023 Applications: S’assurer que le point de l’entrée à l’application est unique
3
Patron : Inversion Of Control IoC
▪ On appelle « contrôle » le flot d’exécution d’une application.
▪ En programmation classique, le flot d’exécution résulte exclusivement des instructions
des programmes.
▪ Au contraire, en programmation événementielle, comme en JavaFX, le programme ne
maîtrise plus le flot d’exécution : les traitements sont déclenchés par JavaFX en
fonction des actions de l’utilisateur sur l’interface.
▪ Il y a « inversion du contrôle », puisque c’est JavaFX qui pilote le flot d’exécution et
gère en particulier la boucle d’attente des événements.
▪ Les programmes s’insèrent dans le cadre fixé par JavaFX.
2022/2023 4
Patron : Inversion Of Control IoC
▪ Cette inversion du contrôle est caractéristique
des frameworks et les différencie des
bibliothèques de code.
▪ Bibliothèques de codes sont des composants
passifs. Les programmes appellent leurs
fonctions, en conservant la maîtrise du
contrôle.
▪ les frameworks sont des composants actifs. Ce
sont eux qui prennent en charge l’essentiel du
flot de contrôle via leurs conteneurs, parfois
appelés « conteneurs d’IoC ».
▪ Il est parfois appelé principe « Hollywood », en
référence à la phrase célèbre « Ne nous
appelez pas, c’est nous qui vous appellerons ».
2022/2023 5
Patron : Dependency Injection DI
L’injection par Framework :
▪ l’application du principe d’Inversion du Contrôle, en donnant au framework un
rôle actif.
▪ C’est lui qui injecte les dépendances entre les composants.
▪ Pour ce faire, il s’appuie sur une description de ces dépendances via un fichier
de configuration XML ou via des annotations.
▪ Ainsi, les dépendances entre composants logiciels ne sont plus exprimées dans
le code de manière statique mais déterminées dynamiquement à l’exécution.
2022/2023 6
SPRING : Configuration des beans – Annotations
Java - Injection
▪ Le premier bean de notre application sera donc obligatoirement instancié
par une factory Spring qui chargera le contexte et appliquera la
configuration à ce bean.
▪ Pour faire de l’injection de dépendances dans Spring, on peut utiliser
@Autowired
2022/2023 7
TP 2 : IOC et DI
2022/2023 8