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 Spring Io. C Google Guice Conclusion u Injection par interface u Injection par mutateur u Injection par champs 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 multiples pour l’injection Google Guice u. Pas 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 d’utilisation Google Guice Conclusion n 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
- Http://प
- Four seasons korean movie
- Months of spring
- Google docshttps://mail.google.com/mail/u/0/#inbox
- Google calendar google forms
- Konichiwa prijevod
- Google acadmico
- Halfond
- Sintez sp ltd
- Microcellular injection molding
- Top up injection
- Types of injection
- Dynamodb sql injection
- Peak and hold injector waveform
- Dsteamseguridad
- Site d'injection du vpi
- Enteryx injection gerd
- Compound sodium lactate injection ip
- Oracle apex security
- Erp software for plastic injection molding
- Thymalfasin for injection
- Metrosil injection
- Sql injection
- Flow injection analysis
- Types of injection
- Injection molding school
- Basic injection technique
- Injection molding cold slug
- Right dorsogluteal
- To 27
- Fuzzing sql injection
- Zilmax injection