..


Sponsede Lenker

IOC og DI (Inversjon of Control og Dependency Injection)

The 'Inversjon of Control (IOC) er et typisk trekk av rammeverket, som beveger kontroll flyten fra anvendelsen av rammeverket selv.

La oss ta et eksempel for å klargjøre konseptet: Hvis du oppretter en GUI API gjennom swing , programmerer bare trenger å implementere event handlers utløst av brukeren, som for eksempel trykke på en knapp eller skrive inn tekst. Framework er overlatt til flytkontroll programmer, for eksempel lukke og åpne vinduene.

Denne typen atferd kalles IOC som kontrollen er flyttet av utvikleren av rammeverket.

Når det er klart hva som er IOC, ser vi hvordan det blir brukt i løpet av våren.
Alle søknader er laget av objekter som nå målet målet bør samarbeide med hverandre, og deretter uunngåelig dannes avhengigheter. Typisk disse avhengigheter er løst ved et stykke kode som er egnet for konfigurasjon (vanligvis produsenten). Anta at vi har å implementere en klasse for å håndtere en videobutikk:






 it.mrwebmaster pakke;









 import java.util.ArrayList;







 import java.util.List;









 public class {VideoManager





  



 Private DvdService dvdService;





  



 public VideoManager () {



    



 super ();



    



 / **



     



 * Konfigurasjon og løse avhengigheter



     



 * /



    



 this.dvdService DvdServiceImpl = new ();



  



 }





  



 <Dvd> GetAvalaibleDvdList public List () {



    



 / **



     



 * Hent listen over DVD



     



 * /



    



 List <Dvd> dvdList dvdService.getDvdList = ();





    



 / **



     



 * Loop gjennom listen av DVDer for å finne

 

     



 * De er tilgjengelig



     



 * /



    



 List = new ArrayList <Dvd> availabeDvdList <Dvd> ();





    



 for (DVD DVD: dvdList) {



      



 if (dvd.isDisponibile ()) {



        



 availabeDvdList.add (DVD);



      



 }



    



 }





    



 availabeDvdList tilbake;



  



 }

	





 }



I dette eksempelet klassen VideoManager har i oppgave å hente liste over ikke-leid DVD. Listen er hentet ved hjelp av en tjeneste (DvdService) som henter en liste over alle DVDer og sykling på listen er DVD tilgjengelig. Klassen VideoManager derfor har en avhengighet på objektet DvdService, som er løst i konstruktøren.

Diagramma Dipendenze

Hvis vi ikke hadde brukt våren bør vi trenger å bekymre deg løse dipendeza VideoManager i klassen konstruktør, som avhengigheten ville bli løst av Spring.
I Spring, slik at IOC brukes til å reversere kontrollere konfigurasjonen avhengigheter. Av denne grunn ble skapt av Martin Fowler, i sin berømte artikkel , begrepet Dependecy Injection (DI), som brukes noen ganger feilaktig som et synonym for IOC id.
Det grunnleggende konseptet med DI er å ha et eget objekt som omhandler avhengighet oppløsning og initialisering.

Følgende klasse assembler er ansvarlig for initialisering klassen DvdService:

Diagramma Assembler

Det finnes tre typer Dependecy Injection:

  • Interface injeksjon
  • Setter injeksjon
  • Constructor Injection
I Spring, som vi skal se nedenfor, er implementert bare Constructor Injection og Setter, men det er også mulighet for å opprette og initialisere objekter gjennom Object Factory og Factory Method.

Java Spring Guide
E-Learning
Linux (Course) Linux (Course)
Komplett guide til open-source system. Starter fra 49 €.
PHP (Course) PHP (Course)
Full kurs for å lage dynamiske nettsider. Starter fra 49 €.
Ruby og Ruby On Rails (Course) Ruby og Ruby On Rails (Course)
Opprette programvare og web applikasjoner med Ruby og RoR. Starter fra 39 €.
Sponsede Lenker