Spring – IoC Containers

author
3 minutes, 8 seconds Read

De Spring IoC container is de kern van het Spring Framework. De container creëert de objecten, verbindt ze met elkaar, configureert ze en beheert hun volledige levenscyclus van creatie tot vernietiging. De Spring container maakt gebruik van dependency injection (DI) om de componenten waaruit een applicatie bestaat te beheren.

Spring biedt de volgende twee soorten containers.

  1. BeanFactory container
  2. ApplicationContext container

Lees meer: Inversion of Control and Dependency Injection

BeanFactory

Een BeanFactory is in wezen niets meer dan de interface voor een geavanceerde fabriek die in staat is om een register van verschillende bonen en hun afhankelijkheden bij te houden.

De BeanFactory stelt ons in staat om baandefinities te lezen en ze te benaderen met behulp van de bonenfabriek.

1.1. Hoe maak je een BeanFactory

Wanneer we alleen de BeanFactory gebruiken, kunnen we er een maken en een aantal bean definities in het XML formaat inlezen als volgt:

Andere manieren om een bean factory te maken zijn zoals hieronder:

Basically is dat alles wat er is. Met getBean(String) kun je instanties van je bonen ophalen; de client-side weergave van de BeanFactory is verrassend eenvoudig.

1.2. BeanFactory methoden

De BeanFactory interface heeft slechts zes methoden voor client code om aan te roepen:

  1. boolean containsBean(String): retourneert true als de BeanFactory een baandefinitie of booninstantie bevat die overeenkomt met de gegeven naam
  2. Object getBean(String): retourneert een instantie van de boon die onder de gegeven naam is geregistreerd. Afhankelijk van hoe de boon was geconfigureerd door de BeanFactory configuratie, zal ofwel een singleton en dus gedeelde instantie of een nieuw aangemaakte boon worden geretourneerd. Een BeansException zal worden gegooid wanneer ofwel de boon niet kon worden gevonden (in welk geval het een NoSuchBeanDefinitionException zal zijn), of een uitzondering is opgetreden tijdens het instantiëren en voorbereiden van de boon
  3. Object getBean(String, Class): retourneert een boon, geregistreerd onder de gegeven naam. De teruggegeven boon zal gecast worden naar de gegeven Klasse. Als de bean niet kon worden gecast, worden overeenkomstige excepties gegooid (BeanNotOfRequiredTypeException). Verder zijn alle regels van de getBean(String) methode van toepassing (zie boven)
  4. Class getType(String name): geeft de Class van de boon met de gegeven naam terug. Als geen boon met de gegeven naam kon worden gevonden, wordt een NoSuchBeanDefinitionException gegooid
  5. boolean isSingleton(String): bepaalt of de baandefinitie of de booninstantie die onder de gegeven naam is geregistreerd, een singleton is of niet. Als geen boon met de gegeven naam kon worden gevonden, zal een NoSuchBeanDefinitionException worden gegooid
  6. String getAliases(String): Geeft de aliassen voor de gegeven boonnaam terug, als die waren gedefinieerd in de baandefinitie

ApplicationContext

ApplicationContext container voegt meer bedrijfsspecifieke functionaliteit toe, zoals de mogelijkheid om tekstuele berichten uit een eigenschappenbestand op te lossen en de mogelijkheid om applicatiegebeurtenissen te publiceren naar geïnteresseerde event listeners. Deze container wordt gedefinieerd door de org.springframework.context.ApplicationContext interface.

De ApplicationContext container bevat alle functionaliteit van de BeanFactory container, dus het wordt over het algemeen aanbevolen boven de BeanFactory. BeanFactory kan nog steeds worden gebruikt voor lichtgewicht applicaties zoals mobiele apparaten of applet-gebaseerde applicaties waar datavolume en snelheid van belang zijn.

2.1. Types ApplicationContext

De meest gebruikte ApplicationContext implementaties zijn:

  1. FileSystemXmlApplicationContext – Deze container laadt de definities van de bonen uit een XML-bestand. Hier moet je het volledige pad van het XML-bestand met de bonenconfiguratie aan de constructor opgeven.
  2. ClassPathXmlApplicationContext – Deze container laadt de definities van de bonen uit een XML-bestand. Hier hoef je niet het volledige pad van het XML-bestand op te geven, maar je moet wel CLASSPATH goed instellen omdat deze container het XML-bestand met de bonenconfiguratie in CLASSPATH zal opzoeken.
  3. WebXmlApplicationContext – Deze container laadt het XML-bestand met de definities van alle bonen vanuit een webapplicatie.

2.2. Hoe maak je ApplicationContext

Een voorbeeldcode voor het instantiëren van een applicatiecontext ziet er als volgt uit.

Similar Posts

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.