Injection de dpendances Spring Io C Google Guice
- Slides: 31
Injection de dépendances Spring Io. C & Google Guice 1 Ingénieurs 2000 | Xposé | Florian Gourier
Plan n Introduction n Concepts n Spring Io. C n Google Guice n Conclusion 2
Introduction n Concepts Spring Io. C n Google Guice Conclusion n n 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 3
Introduction Concepts n Plusieurs types d’injection : u Injection par constructeur u Injection par interface u Injection par mutateur u Injection par champs Spring Io. C Google Guice Conclusion 4
Concepts Introduction Concepts Spring Io. C Google Guice Conclusion 5
Concepts Cas de base n Introduction Concepts n Dépendance : utilisation de méthodes d’une autre classe Généralement fait par un « new » dans le code Spring Io. C Google Guice n Pas modulaire, difficile à maintenir, ne permet pas le changement Conclusion 6
Concepts Avec une interface Introduction n Permet à la classe A d’utiliser une interface n Plusieurs implémentations de l’interface n Toujours un « new » dans le code de A n Pas beaucoup avancé Concepts Spring Io. C Google Guice Conclusion 7
Concepts Avec une factory Introduction Concepts n Un seul new de la classe B dans tout le code n Changement d’implémentation facile n Pattern Factory lourd, pas toujours évident Spring Io. C Google Guice Conclusion 8
Concepts En injectant manuellement Introduction Concepts n Passage de l’implémentation dans le constructeur n Rapide à coder, facile à utiliser n Dispersion des implémentations dans le code Spring Io. C Google Guice Conclusion 9
Concepts Les avantages Introduction n Changer d’implémentation sans changer le code Concepts Ø Spring Io. C Ø Très maintenable Plusieurs configurations possibles Google Guice Conclusion n Tester une application avec des mocks sans recompiler Ø Ø Testabilité facile Meilleure qualité 10
Concepts Introduction Concepts Spring Io. C Google Guice Conclusion 11
Concepts Les frameworks Introduction n Pico. Container (Constructeur) n Avalon (Interface) n Spring Io. C (Mutateurs) n Google Guice (Champs & Constructeur) Concepts Spring Io. C Google Guice Conclusion 12
Concepts Les frameworks Introduction Concepts Spring Io. C Google Guice Conclusion 13
Spring Io. C Spring n Framework « léger » pour le développement J 2 EE n 3 concepts : Introduction Concepts L’inversion de contrôle u La Programmation Orientée Aspect u Une couche d’abstraction u Spring Io. C Google Guice Conclusion n Premier framework très utilisé 14
Spring Io. C Principe de fonctionnement Introduction n Utilise une configuration xml pour lier interface et implémentation Concepts Spring Io. C n Google Guice Les classes sont des beans (possèdent getters et setters) Conclusion n Création d’un Application. Context pour charger le fichier xml 15
Spring Io. C Principe de fonctionnement (configuration) Introduction Concepts n Déclaration des liaisons interface/implémentation n Utilisation des champs pour l’injection Spring Io. C Google Guice u Nommage identique champ classe/xml Conclusion <bean id="Basic. Shortener" class="impl. Basic. Shortener"></bean> <bean id="Sms. Tweeter" class="impl. Sms. Tweeter"></bean> <bean id="tweet. Client" class="core. Tweet. Client"> <property name="tweet" ref="Sms. Tweeter"/> <property name="shorten" ref="Basic. Shortener"/> </bean> 16
Spring Io. C Principe de fonctionnement (beans) Introduction n injecter Concepts Spring Io. C n Google Guice Conclusion Besoin de getters et setters pour les classes à Pas de changement des habitudes de programmation private Tweeter tweet; private Shortener shorten; public Tweeter get. Tweet() {return tweet; } void set. Tweet(Tweeter tweet) {this. tweet = tweet; } Shortener get. Shorten() {return shorten; } void set. Shorten(Shortener shorten) {this. shorten = shorten; } 17
Spring Io. C Principe de fonctionnement (contexte) Introduction Concepts n Chargement du xml pour chaque classe à injection n Localisation du fichier xml n Nom du bean que l’on récupère Spring Io. C Google Guice Conclusion Application. Context context = new Class. Path. Xml. Application. Context("beans. xml"); Tweet. Client tweeter = (Tweet. Client) context. get. Bean("tweet. Client"); tweeter. publish. With. Url("message", "http: //tweeter. com"); 18
Spring Io. C Avantages/Inconvénients Introduction n Les plus : Concepts u. Spring Io. C u. Choix Google Guice u. Pas multiples pour l’injection besoin de recompiler Conclusion n Les moins : u Xml => lourd u Syntaxe contraignante 19
Spring Io. C Démonstration Introduction Concepts Spring Io. C Google Guice Conclusion 20
Google Guice Google Introduction n applications web Concepts Spring Io. C Plus connu pour son moteur de recherche et ses n Développé pour être « meilleur » que Spring Io. C n Utilisé dans la plupart des applications de google Guice Conclusion 21
Google Guice Principe de fonctionnement Introduction n interface implémentation Concepts Spring Io. C Utilise des abstract. Module pour faire la liaison n Utilise l’annotation @Inject pour déclarer les classes à injecter Google Guice Conclusion n Utilise un Injector pour charger le module dans notre application 22
Google Guice Principe de fonctionnement (les modules) n Étendent la classe Abstract. Module de Guice Concepts n Un module peut effectuer plusieurs associations Spring Io. C n Introduction Google Guice Une application peut avoir plusieurs modules (1 module = 1 configuration) Conclusion public class Main. Module extends Abstract. Module { protected void configure() { bind(Tweeter. class). to(Sms. Tweeter. class); bind(Shortener. class). to(Basic. Shortener. class); } 23
Google Guice Principe de fonctionnement (l’injection) Introduction Les interfaces qui doivent être injectées sont annotée avec l’annotation Inject Concepts n n Spring Io. C Possibilité d’annoter le constructeur ou bien les champs directement Google Guice n Conclusion Annotation respectant la JSR 299 depuis Guice 2. 1 public class Tweet. Client { private final Shortener shortener; private final Tweeter tweeter; @Inject public Tweet. Client(Shortener shortener, Tweeter tweeter) { this. shortener = shortener; this. tweeter = tweeter; } 24
Google Guice Principe de fonctionnement (l’injecteur) n Introduction Injecteur Guice pour charger le module dans notre application Concepts Toutes dépendances et sous dépendances Spring Io. C n Google Guice résolues à partir du module Conclusion public static void main(String[] args) { Injector injector = Guice. create. Injector(new Tweet. Module()); Tweet. Client tweet. Client = injector. get. Instance(Tweet. Client. class); tweeter. publish. With. Url("message", "http: //tweeter. com"); } 25
Google Guice Avantages/Inconvénients Introduction n Les plus : Concepts u. Rapide Spring Io. C u. Facile Google Guice Conclusion n d’utilisation Les moins : u. Cas complexes non gérés u. Besoin de recompiler 26
Google Guice Démonstration Introduction Concepts Spring Io. C Google Guice Conclusion 27
Conclusion L’injection de dépendance Introduction Concepts Spring Io. C n Réduit le temps de maintenance en cas de changement n Permet plusieurs configurations avec le même code n Permet l’utilisation de Mocks facilement n Facile à prendre en main Google Guice Conclusion 28
Conclusion Spring ou Guice ? Introduction Concepts n Frameworks très similaires n Spring reste très utilisé dont l’Io. C n Mais lourd et format compliqué n À utiliser avec le framework Spring n Sinon Guice très léger et plus agréable à utiliser Spring Io. C Google Guice Conclusion 29
Webographie n http: //www. springsource. com/ n http: //code. google. com/p/google-guice/ n http: //www. picocontainer. org/ n http: //excalibur. apache. org/ n http: //www. dotnetguru. org/articles/dossiers/ioc. htm n http: //martinfowler. com/articles/injection. html 30
Des questions ? 31
- Createyourgoogleaccount
- Months of summer
- Bae yong-kyun
- Google acadêmico (https //scholar.google.com.br/)
- Google docshttps://mail.google.com/mail/u/0/#inbox
- Google form calendar
- Konichiwa prijevod
- Discogel injection
- Vena cefalika
- Split injection
- Periodontal ligament injection definition
- Synerject
- Icm - injection compression moulding
- Insulin injection
- Owasp a1 injection
- Sublocade injection side effects
- Injection molding
- Sql intval
- Direct rapid tooling
- Perlinguale
- Epaxial im injection dog
- Skin whitening injection in dubai
- Biotrem injection
- It band injection site
- Becofol injection
- Https://xkcd.com/327
- Dinoprostone injection
- Dependency injection types
- Waf bypass techniques
- Sybase sql injection
- Iv injection sites diagram
- Lc injection