🌿
Intro
Created by Youssef Meziani
Injection : passer une reference (un candidat d'une contrat) au moment
d’execution), il n’y a pas le keyword “new”
⇒ on évite l’instanciation car les constructeurs peut dépondrent d’autre classe
💡 Le factory pattern : approche de programmation qui permet de créer des
objets sans avoir à spécifier la classe exacte de ces objets.
Cela permet d'échanger l'objet créé de manière souple et pratique.
Role des interfaces :
Le contrat d'interfacage (definie seulement les comportements
d'interfacages) : abstraction pour qu'il fontionne avec tout
Pour simuler l’héritage multiple
Des tags ou des drapeaux : marquer des elements qui ne contient aucune
choses (comme interface "sérialisable")
Contrat d’interfaçage :
Contrat (element intermédiaire) entre un producteur(fournisseur du service) et un
consommateur (consommateur du services) selon des critères bien définie et qu'il
doivent être respecter pour unifier - harmoniser un échange entre les classes
dans un système.
Intro 1
Les conditions pour qu’on dit on a une
contrat :
1. Englober et couverer tout les cas possibles dans mon application
2. Cette contrat ne contient aucun details qui est lier spécifiquement a quelque
chose spécifique ?
Spring:
Outil permettant de satisfaire les dépendances entres objets par injection, basé
sur des fichiers de paramétrage ou de configuration XML ou basé sur des
annotations, gère (création - éxécution - destruction) automatiquement le cycle de
vies de tout les beans, respecte le principe hollywood (don’t call us, we’ll call you)
et c’est un conteneur de beans.
💡 La phase d'initialisation/création (initialisation/instance des beans -
s’occupe des injections de dependance) :
ApplicationContext ctx = ClassPathXmlApplicationContext("appContext.xml");
NB : si on a une erreur , il s’affiche comme une exception RuntimeExeption et on a
un arrêt global de l’app au moment de l'initialisation et aussi il déclenche la
destruction de tout les beans de mon application.
Spring doit connaître comment gérer mes objets (beans) à travers une
configuration avec :
XML : parcequ’il disent que les classes doivent avoir une seul responsabilité
metier, le paramétrage ne fait pas partie de sa responsabilité.
⇒
L’inconvénient : l’expérience de développement vas causer des problèmes :
pour récupérer les paramétrage d'une classe je doit faire des grandes
recherches pour l'arriver (c’est un coût supplémentaire)
Annotations : parce que la communauté priorise les annotations dans ces
projet vides qui sont comme exemple pour se baser.
Intro 2
⇒
L’avantage : est un principe leger (avoir plus de navigation et une rapidité en
terme de)
📌 Je peux faire des traitements spécifiques ou des personnalisations au
moment de démarrage.
💡 Spring est un conteneur IoC (Inversion of Control) qui facilite le
développement d'applications Java en fournissant un moyen de gérer
les dépendances entre les différents composants d'une application.
💡 Spring se base sur des conteneurs (Bean container)
💡 App -> 1 ou N conteneurs
Conteneur -> 1 ou N beans
Bean :
Simple objets géré par spring qui doit avoir une class (le nom complet de la deps
du package jusqu’à la classe) obligatoirement et un id facultatif (grâce à
l'autowiring basé sur le type et les conventions de nommage automatiques)
💡 une app a un ou plusieurs conteneurs et un conteneurs a un ou plusieurs
bean
Intro 3
💭 une transaction dans une db est un ensemble de requêtes qui se termine
soit par un commit ou un rollback, il s’applique aux données et non pas
la structure des BD
💡 si on modifie le paramétrage on doit exécuter l’app pour vérifier son bon
fonctionnement, car la compilation est seulement pour les fichiers java
🔥 Condition :
- constructeur public avec les paramètre spécifié ou sans (selon notre
classe)
- le chemin ou le package de la classe doit être correcte
💡 si on a une erreur dans le fichier xml contenant les beans, on aura une
erreur d’exécution et pas de compilation car les fichier non java ne sont
pas traité au moment de la compilation.
💡 on doit assurer que tout la creations des beans est passé avec succée ,
sinon il fait rollBack et il detruit tous les beans crée avant et lance une
exeption RunTime.
💡 95% des exeptions de spring sont des exeptions d'execution.
Choix d’injection :
on choisie par accesseur pour améliorer la lisibilité du constructeur (ex: 20
paramètre dans le constructeur)
Scope des beans :
Intro 4
Singleton (default) : une seule instance par contexte.
Prototype : nouvelle instance crée chaque fois que le bean est injecté.
Session : nouvelle instance crée par session utilisateur. Environnement Web.
Request : nouvelle instance crée pour chaque requête. Environnement Web.
Custom : définition de nouvelles règles de gestions. Programmation avancée.
💡 Chaque client a une session même si il n’est pas authentifié
Intro 5