Dependency Injection Frameworky

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Dependency Injection Frameworky - Presentation Transcript

    1. Dependency Injection frameworky v Jave
      Dagi,
      Čeven, 2009
    2. 3
      24 June 2009
      Agenda
      1. Intro
      2. Inversionofcontrol
      3. Co by měl DI framework zvládnout
      4. Srovnání vybraných DI frameworků
      5. Q&A
    3. Intro
    4. 5
      6/24/2009
      For internal use only -- not for distribution
    5. Martin Fowler
      Refactoring
      Continuousintegration
      InversionofControl
      6
      6/24/2009
      For internal use only -- not for distribution
    6. Timeline
      7
      24 June 2009
      http://www.picocontainer.org/inversion-of-control-history.html
    7. InversionofControl
    8. Programy před zavedením IoC
      9
      6/24/2009
      For internal use only -- not for distribution
    9. Programy po zavedení IoC
      10
      24 June 2009
    10. Komponenty a jejich vazby
      11
      24 June 2009
    11. 12
      24 June 2009
      public classReservationService {
      privateBookServicebookService;
      public ReservationService() {
      init();
      }
      privatevoidinit () {
      LocalBookStorelocalBookStore = newLocalBookStore();
      localBookStore.setPath("/home/johndoe/data.xml");
      setBookService(localBookStore);
      }
      public booleanreserveBook(longbookId, Datefrom,Date to,User u) {
      Bookbook = bookService.getBook(bookId);
      //kod vlastní rezervace vynechan
      }
      publicvoidsetBookService(BookServicebookService) {this.bookService=bookService;
      }
      }
    12. KnowYourEnemy
      13
      24 June 2009
      privatevoidinit () {
      LocalBookStorelocalBookStore = newLocalBookStore();
      localBookStore.setPath("/home/johndoe/data.xml");
      setBookService(localBookStore);
      }
    13. Generalizace problému
      Kde najít
      Jak získat
      Jak zkonfigurovat
      Jak spojit dohromady
      14
      24 June 2009
    14. Obrácená kontrola
      „…vychází z principu přenesení odpovědnosti za nalezení, konfiguraci a spojení komponent dohromady na někoho třetího“
      Indirekce == volné vazby (looselycoupled)
      Znovupoužitelnost
      Lepší testovatelnost
      Extenzibilita
      Dvě možné implementace
      Přímé závislosti na prostředníkovi
      Nepřímé závislosti na prostředníkovi
      15
      24 June 2009
    15. Servicelocator
      16
      24 June 2009
    16. DependencyInjection
      17
      24 June 2009
    17. Servicelocator vs. DI
      Preferujte DI
      Žádné těsné vazby
      Transparentní
      No singletonhell
      Servicelocator
      body napojení
      Servlet
      Controller aplikace
      18
      24 June 2009
    18. Co by měl DI framework zvládnout
    19. Minimální možná míra invaze
      Invazivnost
      Jak moc je ještě komponenta POJO
      Co je invazivní
      Implementace rozhraní
      Odvození komponenty od specifické třídy frameworku
      Nemožnost používat základní programové konstrukty
      finální třídy
      konstruktory s parametrem
      Proč
      Návrhové a implementační kompromisy
    20. Podpora základních typů realizace DI
      Constructorinjection
      Bezpečnější, Přehlednější
      Nepovinné závislosti, Cyklické závislosti (proxy)
      Setterinjection
      Nepovinné či velké množství závislostí
      Chybějící závislosti (@Required)
      Fieldinjection
      Jednoduchý zápis
      Netransparentní
      Proč
      Pro různé případy se hodí různé přístupy
      21
      24 June 2009
    21. Metadata pro popis komponent
      Anotace
      Jednoduchý zápis
      Zapečené na úrovni kódu
      XML
      Ukecané
      Lze měnít v deploymenttime
      Konfigurovatelné komponenty (vazba na infrastrukturu)
      Proč
      Obvykle oba typy komponent v aplikace
      22
      24 June 2009
    22. Jak najít obrázky pro prezentaci
      23
      24 June 2009
    23. 24
      24 June 2009
    24. Reference mezi komponentami
      Typem
      Bezpečnější (Teoreticky)
      Jedna instance komponenty
      Sběr podle typu
      Extenzibilita s volnou vazbou
      Symbolickým jménem
      Více instancí stejného rozhraní
      Variabilnější skládání
      XML
      Proč
      Testování (mockobjecty se stejným rozhraním)
      25
      24 June 2009
    25. Řízení vzniku komponent
      Uvnitř kontextu
      Delegace
      Factory, Fctory metod
      Mimo kontext
      Deserializace komponenty
      Web či ORM framework
      Proč
      Legacy kód, 3rd party knihovny
      26
      24 June 2009
    26. Řízené pořadí vzniku
      Proč
      Nepřímé závislosti
      Zajištění explicitního pořadí inicializace
      27
      24 June 2009
    27. Životní cyklus komponent
      Jedna instance komponenty
      Singleton
      Nová instance komponenty
      Prototyp
      Konverzační instance komponenty
      HTTP request, HTTP session atd.
      Proč
      Implementační detail komponenty
      Web aplikace
      28
      24 June 2009
    28. Další
      Programový přístup ke komponentám
      Proč
      Vstupní bod aplikace
      Kód, který si není vědom obrácené kontroly
      Legacy, Integrace s 3party knihovnami
      Jednoduchá testovatelnost
      Proč
      Efektivita vývoje
      Facebook, Twitter, Freevideo…
      29
      24 June 2009
    29. Srovnání vybraných DI frameworků
    30. Dependencyinjectionframeworky
      Embeddedframeworky
      PicoContainer 2.8
      GoogleGuice 2.0
      Aplikační frameworky
      JBossMicrocontainer 2.0.6 GA
      Springframework 2.5.x
      Standard
      ApacheOpenEJB 3.0
      31
      24 June 2009
    31. 32
      24 June 2009
    32. Java Contexts and Dependency Injection (JSR-299)
      WebBeans
      Myths
      JSR-299 is just for EJBs
      JSR-299 is tied to JSF
      JSR-299 is tied to heavyweight Java EE containers
      JSR-299 uses a lot of annotations
      33
      24 June 2009
    33. 34
      24 June 2009
    34. Questions?
    SlideShare Zeitgeist 2009

    + Roman PichlikRoman Pichlik Nominate

    custom

    1120 views, 0 favs, 5 embeds more stats

    Prezentace na tema Dependency inejction frameworky more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1120
      • 642 on SlideShare
      • 478 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 13
    Most viewed embeds
    • 472 views on http://pichlik.sweb.cz
    • 3 views on http://blog.oxyonline.local
    • 1 views on http://static.slidesharecdn.com
    • 1 views on http://www.mefeedia.com
    • 1 views on http://blog

    more

    All embeds
    • 472 views on http://pichlik.sweb.cz
    • 3 views on http://blog.oxyonline.local
    • 1 views on http://static.slidesharecdn.com
    • 1 views on http://www.mefeedia.com
    • 1 views on http://blog

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories