La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Injection de dépendances Spring IoC & Google Guice Ingénieurs 2000 | Xposé | Florian Gourier 1."— Transcription de la présentation:

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

2 Plan n Introduction n Concepts n Spring IoC n Google Guice n Conclusion 2

3 Introduction n Dérivé du principe dinversion de contrôle n Utilisé pour avoir des applications modulaires n Facilite lutilisation de Mocks n Utilisé pour la programmation orientée aspect Introduction Concepts Spring IoC Google Guice Conclusion 3

4 Introduction n Plusieurs types dinjection : u Injection par constructeur u Injection par interface u Injection par mutateur u Injection par champs Introduction Concepts Spring IoC Google Guice Conclusion 4

5 Concepts Introduction Concepts Spring IoC Google Guice Conclusion 5

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

7 Concepts n Permet à la classe A dutiliser une interface n Plusieurs implémentations de linterface n Toujours un « new » dans le code de A n Pas beaucoup avancé Avec une interface Introduction Concepts Spring IoC Google Guice Conclusion 7

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

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

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

11 Concepts Introduction Concepts Spring IoC Google Guice Conclusion 11

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

13 Concepts Les frameworks Introduction Concepts Spring IoC Google Guice Conclusion 13

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

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

16 Spring IoC n Déclaration des liaisons interface/implémentation n Utilisation des champs pour linjection u Nommage identique champ classe/xml Principe de fonctionnement (configuration) Introduction Concepts Spring IoC Google Guice Conclusion 16

17 Spring IoC n Besoin de getters et setters pour les classes à injecter n Pas de changement des habitudes de programmation Principe de fonctionnement (beans) 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;} Introduction Concepts Spring IoC Google Guice Conclusion 17

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

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

20 Spring IoC Démonstration Introduction Concepts Spring IoC Google Guice Conclusion 20

21 Google Guice n Plus connu pour son moteur de recherche et ses applications web n Développé pour être « meilleur » que Spring IoC n Utilisé dans la plupart des applications de google Google Introduction Concepts Spring IoC Google Guice Conclusion 21

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

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

24 Google Guice n Les interfaces qui doivent être injectées sont annotée avec lannotation Inject n Possibilité dannoter le constructeur ou bien les champs directement n Annotation respectant la JSR299 depuis Guice 2.1 Principe de fonctionnement (linjection) public class TweetClient { private final Shortener shortener; private final Tweeter public TweetClient(Shortener shortener, Tweeter tweeter) { this.shortener = shortener; this.tweeter = tweeter; } Introduction Concepts Spring IoC Google Guice Conclusion 24

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

26 Google Guice n Les plus : u Rapide u Facile dutilisation n Les moins : u Cas complexes non gérés u Besoin de recompiler Avantages/Inconvénients Introduction Concepts Spring IoC Google Guice Conclusion 26

27 Google Guice Démonstration Introduction Concepts Spring IoC Google Guice Conclusion 27

28 Conclusion n Réduit le temps de maintenance en cas de changement n Permet plusieurs configurations avec le même code n Permet lutilisation de Mocks facilement n Facile à prendre en main Linjection de dépendance Introduction Concepts Spring IoC Google Guice Conclusion 28

29 Conclusion n Frameworks très similaires n Spring reste très utilisé dont lIoC 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 ou Guice ? Introduction Concepts Spring IoC Google Guice Conclusion 29

30 Webographie n n n n n n 30

31 Des questions ? 31


Télécharger ppt "Injection de dépendances Spring IoC & Google Guice Ingénieurs 2000 | Xposé | Florian Gourier 1."

Présentations similaires


Annonces Google