Spring – IoC Containers

author
2 minutes, 19 seconds Read

Spring IoC Container on Spring Frameworkin ydin. Kontti luo objektit, kytkee ne yhteen, konfiguroi ne ja hallitsee niiden koko elinkaaren luomisesta tuhoamiseen. Spring-säiliö käyttää riippuvuusinjektiota (DI, dependency injection) sovelluksen muodostavien komponenttien hallintaan.

Spring tarjoaa seuraavat kaksi konttityyppiä.

  1. BeanFactory-säiliö
  2. ApplicationContext-säiliö

Lue lisää: Inversion of Control and Dependency Injection

BeanFactory

BeanFactory ei ole pohjimmiltaan muuta kuin rajapinta kehittyneelle tehtaalle, joka kykenee ylläpitämään rekisteriä erilaisista pavuista ja niiden riippuvuuksista.

BeanFactory:n avulla voimme lukea papumääritelmiä ja käyttää niitä paputehtaan avulla.

1.1. Miten luodaan BeanFactory

Käytettäessä pelkkää BeanFactory voimme luoda sellaisen ja lukea joitakin papumääritelmiä XML-muodossa seuraavasti:

Muut tavat luoda paputehdas ovat seuraavat:

Periaatteessa siinä kaikki. Käyttämällä getBean(String) voit hakea papujesi instansseja; BeanFactory:n asiakaspuolen näkymä on yllättävän yksinkertainen.

1.2. BeanFactory-metodit

BeanFactory-rajapinnassa on vain kuusi metodia, joita asiakaskoodi voi kutsua:

  1. boolean containsBean(String): Palauttaa true, jos BeanFactory sisältää annettua nimeä vastaavan papumääritelmän tai papuinstanssin
  2. Object getBean(String): Palauttaa annetulla nimellä rekisteröidyn beanin instanssin. Riippuen siitä, miten papu on määritetty BeanFactory-konfiguraatiossa, palautetaan joko singleton ja siten jaettu instanssi tai vasta luotu papu. BeansException heitetään, kun joko pavua ei löydy (jolloin se on NoSuchBeanDefinitionException) tai poikkeus tapahtui, kun pavua instansoitiin ja valmisteltiin
  3. Object getBean(String, Class): palauttaa annetulla nimellä rekisteröidyn beanin. Palautettu papu castataan annettuun luokkaan. Jos beania ei voitu castata, heitetään vastaavat poikkeukset (BeanNotOfRequiredTypeException). Lisäksi sovelletaan kaikkia getBean(String)-metodin sääntöjä (ks. edellä)
  4. Class getType(String name): Palauttaa Class-pavun, jolla on annettu nimi. Jos annettua nimeä vastaavaa papua ei löydy, heitetään NoSuchBeanDefinitionException
  5. boolean isSingleton(String): määrittää, onko annetulla nimellä rekisteröity papumääritelmä tai papuinstanssi singleton vai ei. Jos annettua nimeä vastaavaa papua ei löydy, heitetään NoSuchBeanDefinitionException
  6. String getAliases(String): Palauttaa annetun beanin nimen aliakset, jos sellaisia on määritelty bean määritelmässä

ApplicationContext

ApplicationContext-säiliö lisää yrityskohtaisia toimintoja, kuten kyvyn ratkaista tekstimuotoisia viestejä ominaisuustiedostosta ja kyvyn julkaista sovellustapahtumia kiinnostuneille tapahtumakuuntelijoille. Tämä kontti määritellään org.springframework.context.ApplicationContext-rajapinnalla.

ApplicationContext-kontti sisältää kaiken BeanFactory-kontin toiminnallisuuden, joten sitä suositellaan yleensä BeanFactoryn sijaan. BeanFactory voidaan silti käyttää kevyissä sovelluksissa, kuten mobiililaitteissa tai applet-pohjaisissa sovelluksissa, joissa datan määrä ja nopeus ovat merkittäviä.

2.1. Sovelluskontti. ApplicationContext-tyypit

Yleisimmin käytetyt ApplicationContext toteutukset ovat:

  1. FileSystemXmlApplicationContext – Tämä säiliö lataa papujen määritelmät XML-tiedostosta. Tässä on annettava XML-papujen määritystiedoston koko polku konstruktorille.
  2. ClassPathXmlApplicationContext – Tämä kontti lataa papujen määritelmät XML-tiedostosta. Tässä ei tarvitse antaa XML-tiedoston koko polkua, mutta CLASSPATH on asetettava oikein, koska tämä kontti hakee papujen konfiguraatio-XML-tiedoston CLASSPATH:sta.
  3. WebXmlApplicationContext – Tämä kontti lataa XML-tiedoston, jossa on kaikkien papujen määritelmät web-sovelluksen sisältä.

2.2. ApplicationContextin luominen

Esimerkkikoodi sovelluskontekstin instantiointia varten näyttää tältä.

Similar Posts

Vastaa

Sähköpostiosoitettasi ei julkaista.