Injection de dépendances

Slides:



Advertisements
Présentations similaires
[number 1-100].
Advertisements

Le moteur
1. Résumé 2 Présentation du créateur 3 Présentation du projet 4.
Mon carnet De comportement
Classe : …………… Nom : …………………………………… Date : ………………..
Est Ouest Sud 11 1 Nord 1 Individuel 20 joueurs 15 rondes - 30 étuis (arc-en-ciel) Laval Du Breuil Adstock, Québec I-20-15ACBLScore S0515 RondeNE
Est Ouest Sud 11 1 Nord 1 Laval Du Breuil, Adstock, Québec I-17-17ACBLScore S0417 Allez à 1 Est Allez à 4 Sud Allez à 3 Est Allez à 2 Ouest RndNE
Est Ouest Sud 11 1 Nord 1 RondeNE SO
Est Ouest Sud 11 1 Nord 1 Individuel 15 ou 16 joueurs 15 rondes - 30 étuis Laval Du Breuil Adstock, Québec I-16-15ACBLScore S0415 RndNE
Sud Ouest Est Nord Individuel 36 joueurs
Les Prepositions.
1 V-Ingénierie… La compétence au service de lexigence… vous présente.
Les 3 dimensio ns de la morale et de léthique (activité)
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
JXDVDTEK – Une DVDthèque en Java et XML
Vers un outil d’aide à la conception des cannelures à flancs en développante de cercle La recherche effectuée lors de ma thèse a consisté à décrire le.
La diapo suivante pour faire des algorithmes (colorier les ampoules …à varier pour éviter le « copiage ») et dénombrer (Entoure dans la bande numérique.
Atelier Portail SAP Durée : 2h.
2 1. Vos droits en tant quusagers 3 1. Vos droits en tant quusagers (suite) 4.
Projet sur Framework Spring
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
Développement d’applications web
CALENDRIER PLAYBOY 2020 Cliquez pour avancer.
LUNDI – MARDI – MERCREDI – JEUDI – VENDREDI – SAMEDI – DIMANCHE
Les verbes auxiliaires Avoir ou être ?? Choisissez! Cest un verbe Dr Mrs Vandertrampp? Cest un verbe réfléchi?
LUNDI – MARDI – MERCREDI – JEUDI – VENDREDI – SAMEDI – DIMANCHE
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
Le patron de conception « Strategy » Simon Durocher ( )
Développement d’application web
ADOBE FLEX 4. © Logica All rights reservedNo. 2 Introduction Flex en action Autour de Flex Logica Le programme.
La Saint-Valentin Par Matt Maxwell.
22 Model-View-ViewModel et testabilité pour WPF/Silverlight Richard Clark Clark Ingénierie Informatique Simon Ferquel Access It.
JUnit Présentation complète de JUnit et « guide d’utilisation » en 13 transparents.
Détection d’intrusions
PLD GHome H4214 Piccolo Thomas Gu Lei Deville Romain Huang Yachen
Louis la grenouille Paroles et musique: Matt Maxwell.
GPA789 Analyse et conception orientées objet 1 Professeur: Tony Wong, Ph.D., ing. Chapitre 6 Correspondance UML et C++
SPI - Serial Peripheral Interface
Design Pattern Memento. Principe : Enregistrer les changements d'états d'un objet Objectif : Pouvoir restituer les états précédents d'un objet.
Notre calendrier français MARS 2014
Annexe 1 VISITE SUR
Hybridation sp3 du carbone
COURS DE PROGRAMMATION ORIENTEE OBJET :
C'est pour bientôt.....
Les nombres.
CHARAL Calendrier 2007 Dit is wat mannen boeit!.
Veuillez trouver ci-joint
LA GESTION COLLABORATIVE DE PROJETS Grâce aux outils du Web /03/2011 Académie de Créteil - Nadine DUDRAGNE 1.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
LUNDI – MARDI – MERCREDI – JEUDI – VENDREDI – SAMEDI – DIMANCHE
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
* Source : Étude sur la consommation de la Commission européenne, indicateur de GfK Anticipations.
19 Mai 2009 CADOT, ROMON, NOEL, GUILLOUET, MONGENET-LAMAISON.
10 paires -. 9 séries de 3 étuis ( n° 1 à 27 ) 9 positions à jouer 5 tables Réalisé par M..Chardon.
CALENDRIER-PLAYBOY 2020.
USAM BRIDGE H O W E L L -CLASSIQUE
Septembre Semaines du 2 au 13 septembre DATECOURSEXERCICESEXERCICES à fairePOUR le Jeudi 5 Vendredi 6 Lundi 9 Prise de contacts. Programme ISN. Déroulement.
6 Nombres et Heures 20 vingt 30 trente 40 quarante.
9 paires séries de 3 étuis ( n° 1 à 27 )
Quel est l’intérêt d’utiliser le diagramme de Gantt dans la démarche de projet A partir d’un exemple concret, nous allons pouvoir exploiter plusieurs parties.
Dr. KHERRI Abdenacer 2014/ ECOLE DES HAUTES ETUDES COMMERCIALES.
Les Chiffres Prêts?
Médiathèque de Chauffailles du 3 au 28 mars 2009.
Transcription de la présentation:

Injection de dépendances Spring IoC & Google Guice Ingénieurs 2000 | Xposé | Florian Gourier

Plan Introduction Concepts Spring IoC Google Guice Conclusion

Introduction Dérivé du principe d’inversion de contrôle 30/03/2017 Introduction Dérivé du principe d’inversion de contrôle Utilisé pour avoir des applications modulaires Facilite l’utilisation de Mocks Utilisé pour la programmation orientée aspect Introduction Concepts Spring IoC Google Guice Conclusion Un terme a 25 dollar pour un concept a 5 cents

Introduction Plusieurs types d’injection : Injection par constructeur 30/03/2017 Introduction Plusieurs types d’injection : Injection par constructeur Injection par interface Injection par mutateur Injection par champs Introduction Concepts Spring IoC Google Guice Conclusion Un terme a 25 dollar pour un concept a 5 cents

Concepts Introduction Concepts Spring IoC Google Guice Conclusion

Concepts Cas de base Dépendance : utilisation de méthodes d’une autre classe Généralement fait par un « new » dans le code Pas modulaire, difficile à maintenir, ne permet pas le changement Introduction Concepts Spring IoC Google Guice Conclusion

Concepts Avec une interface Permet à la classe A d’utiliser une interface Plusieurs implémentations de l’interface Toujours un « new » dans le code de A Pas beaucoup avancé Introduction Concepts Spring IoC Google Guice Conclusion

Concepts Avec une factory Un seul new de la classe B dans tout le code Changement d’implémentation facile Pattern Factory lourd, pas toujours évident Introduction Concepts Spring IoC Google Guice Conclusion

Concepts En injectant manuellement Passage de l’implémentation dans le constructeur Rapide à coder, facile à utiliser Dispersion des implémentations dans le code Introduction Concepts Spring IoC Google Guice Conclusion

Concepts Les avantages Changer d’implémentation sans changer le code Très maintenable Plusieurs configurations possibles Tester une application avec des mocks sans recompiler Testabilité facile Meilleure qualité Introduction Concepts Spring IoC Google Guice Conclusion

Concepts Introduction Concepts Spring IoC Google Guice Conclusion 30/03/2017 Concepts Introduction Concepts Spring IoC Google Guice Conclusion C’est très maintenable, c’est très testable, c’est donc le bonheur pour le developpeur

Concepts Les frameworks PicoContainer (Constructeur) Avalon (Interface) Spring IoC (Mutateurs) Google Guice (Champs & Constructeur) Introduction Concepts Spring IoC Google Guice Conclusion

Concepts Les frameworks Introduction Concepts Spring IoC Google Guice Conclusion

Spring IoC Spring Framework « léger » pour le développement J2EE 3 concepts : L’inversion de contrôle La Programmation Orientée Aspect Une couche d’abstraction Premier framework très utilisé Introduction Concepts Spring IoC Google Guice Conclusion

Spring IoC Principe de fonctionnement Utilise une configuration xml pour lier interface et implémentation Les classes sont des beans (possèdent getters et setters) Création d’un ApplicationContext pour charger le fichier xml Introduction Concepts Spring IoC Google Guice Conclusion

Spring IoC Principe de fonctionnement (configuration) 30/03/2017 Spring IoC Principe de fonctionnement (configuration) Déclaration des liaisons interface/implémentation Utilisation des champs pour l’injection Nommage identique champ classe/xml Introduction Concepts Spring IoC Google Guice Conclusion Principe du tweet : -publication d’un message court sur son « profil » afin qu’il soit lisible par tous les abonnés (ici le profil sera la console) Principe du shortener : -les URL sont parfois longues et dures à retenir, il est donc necessaire de pouvoir les réduire. <bean id="BasicShortener" class="impl.BasicShortener"></bean> <bean id="SmsTweeter" class="impl.SmsTweeter"></bean> <bean id="tweetClient" class="core.TweetClient"> <property name="tweet" ref="SmsTweeter"/> <property name="shorten" ref="BasicShortener"/> </bean>

Spring IoC Principe de fonctionnement (beans) Besoin de getters et setters pour les classes à injecter Pas de changement des habitudes de programmation Introduction Concepts Spring IoC Google Guice Conclusion private Tweeter tweet; private Shortener shorten; public Tweeter getTweet() {return tweet;} public void setTweet(Tweeter tweet) {this.tweet = tweet;} public Shortener getShorten() {return shorten;} public void setShorten(Shortener shorten) {this.shorten = shorten;}

Spring IoC Principe de fonctionnement (contexte) Chargement du xml pour chaque classe à injection Localisation du fichier xml Nom du bean que l’on récupère Introduction Concepts Spring IoC Google Guice Conclusion ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); TweetClient tweeter = (TweetClient) context.getBean("tweetClient"); tweeter.publishWithUrl("message", "http://tweeter.com");

Spring IoC Avantages/Inconvénients Les plus : Les moins : Spring Choix multiples pour l’injection Pas besoin de recompiler Les moins : Xml => lourd Syntaxe contraignante Introduction Concepts Spring IoC Google Guice Conclusion

Spring IoC Démonstration Introduction Concepts Spring IoC Google Guice 30/03/2017 Spring IoC Démonstration Introduction Concepts Spring IoC Google Guice Conclusion Histoire de volvo

30/03/2017 Google Guice Google Plus connu pour son moteur de recherche et ses applications web Développé pour être « meilleur » que Spring IoC Utilisé dans la plupart des applications de google Introduction Concepts Spring IoC Google Guice Conclusion Google => besoin d’expliquer ? Je suis sur qu’actuellement il ya une personne au moins en train de chercher un truc dessus dans le fond de la salle

Google Guice Principe de fonctionnement Utilise des abstractModule pour faire la liaison interfaceimplémentation Utilise l’annotation @Inject pour déclarer les classes à injecter Utilise un Injector pour charger le module dans notre application Introduction Concepts Spring IoC Google Guice Conclusion

Google Guice Principe de fonctionnement (les modules) Étendent la classe AbstractModule de Guice Un module peut effectuer plusieurs associations Une application peut avoir plusieurs modules (1module = 1configuration) Introduction Concepts Spring IoC Google Guice Conclusion public class MainModule extends AbstractModule { protected void configure() { bind(Tweeter.class).to(SmsTweeter.class); bind(Shortener.class).to(BasicShortener.class); }

Google Guice Principe de fonctionnement (l’injection) 30/03/2017 Google Guice Principe de fonctionnement (l’injection) Les interfaces qui doivent être injectées sont annotée avec l’annotation Inject Possibilité d’annoter le constructeur ou bien les champs directement Annotation respectant la JSR299 depuis Guice 2.1 Introduction Concepts Spring IoC Google Guice Conclusion JSR 299 : Contexts and Dependency Injection for the JavaTM EE platform public class TweetClient { private final Shortener shortener; private final Tweeter tweeter; @Inject public TweetClient(Shortener shortener, Tweeter tweeter) { this.shortener = shortener; this.tweeter = tweeter; }

Google Guice Principe de fonctionnement (l’injecteur) Injecteur Guice pour charger le module dans notre application Toutes dépendances et sous dépendances résolues à partir du module Introduction Concepts Spring IoC Google Guice Conclusion public static void main(String[] args) { Injector injector = Guice.createInjector(new TweetModule()); TweetClient tweetClient = injector.getInstance(TweetClient.class); tweeter.publishWithUrl("message", "http://tweeter.com"); }

Google Guice Avantages/Inconvénients Les plus : Les moins : Rapide Facile d’utilisation Les moins : Cas complexes non gérés Besoin de recompiler Introduction Concepts Spring IoC Google Guice Conclusion

Google Guice Démonstration Introduction Concepts Spring IoC 30/03/2017 Google Guice Démonstration Introduction Concepts Spring IoC Google Guice Conclusion Expliquer différence avec Spring

Conclusion L’injection de dépendance Réduit le temps de maintenance en cas de changement Permet plusieurs configurations avec le même code Permet l’utilisation de Mocks facilement Facile à prendre en main Introduction Concepts Spring IoC Google Guice Conclusion

Conclusion Spring ou Guice ? Frameworks très similaires Spring reste très utilisé dont l’IoC Mais lourd et format compliqué À utiliser avec le framework Spring Sinon Guice très léger et plus agréable à utiliser Introduction Concepts Spring IoC Google Guice Conclusion

Webographie http://www.springsource.com/ http://code.google.com/p/google-guice/ http://www.picocontainer.org/ http://excalibur.apache.org/ http://www.dotnetguru.org/articles/dossiers/ioc/ioc.htm http://martinfowler.com/articles/injection.html

Des questions ?