Bonjour,
J'ai un problème pour comprendre la notion d'injection des dependences? Quelle est son principe travail.
J'attends vos réponses et merci.
Bonjour,
J'ai un problème pour comprendre la notion d'injection des dependences? Quelle est son principe travail.
J'attends vos réponses et merci.
Salut,
L'IoC (Inversion of Control) est un pattern d'architecture d'application qui consiste à laisser le framework gérer l'exécution de l'application : on lui fourni des bouts de code et le framework organise leur exécution. On parle de cycle de vie de composant (initialisation, démarrage, etc) géré par le framework.
L'IoD (Inversion of Dependancy) est une manière de faire de l'IoC.
En programmation classique, un composant va aller demander à un autre (par exemple un gestionnaire, celui d'un framework qu'on utilise pour nous aider à construire l'application sans tout réécrire) un composant qu'il a besoin. Par exemple, un composant de traitement quelconque (mettons un Dao) va avoir explicitement dans son code un appel d'une méthode pour connaître le logger de l'application afin de loguer des messages (erreurs, warning, info...).
En IoD, c'est le framework qui va injecter (comprendre affecter à un moment donné, souvent une étape d'initialisation ou de démarrage dans un cycle de vie de composant géré par le framework) le composant de logging, parce qu'il y a une information quelque part (dans un fichier de config ou via une annotation) qui dit que le composant voudrait pouvoir logger.
Le but étant de découpler les composants (favoriser l'isolation) : ils n'ont plus besoin de références directes aux fournisseurs de composants (gestionnaires). Ils n'ont juste qu'à dire qu'ils en ont besoin. Il n'y a plus de dépendances techniques : le composant va dire qu'il a besoin de loguer. Que le log soit en base de données, dans un fichier ou autre, le composant s'en moque.
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Le système d'injection de dépendance s'occupe d'injecter dans une classe qui le demande une instance d'une autre.
Avant, on faisait un new UnObjet(...) ou un session.getAttribute("UnNom") etc... pour récupérer une instance
Avec CDI, on marque la référence dans la classe et le système s'occupe d'injecter ce qu'il faut (dans la mesure où ce qu'on lui demande d'injecter est bien dans son domaine)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 @Named @SessionContext class UnManagedBean { ... }Dans cet exemple, le deuxième bean reçoit l'instance de UnManagedBean lié à la session en cours de l'utilisateur qui fait la requête.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 @Named @RequestContext class MonObjet { @Inject private UnManagedBean monManagedBean; }
Là, c'est juste le niveau 1 de l'injection de dépendance, je te suggère de lire ce tutoriel sur CDI pour avoir une vue plus générale de ce qu'on peut faire![]()
Partager