De Spring container is de kern van het Spring Framework. De container maakt de objecten, verbindt ze, configureert ze, en beheert hun complete levenscyclus van creatie tot vernietiging. De Spring container gebruikt DI om de componenten te beheren die samen een applicatie vormen. Deze objecten worden Spring Beans genoemd, die we in het volgende hoofdstuk zullen bespreken.
De container krijgt zijn instructies over welke objecten te instantiëren, configureren, en assembleren door het lezen van de configuratie metadata die wordt verstrekt. De configuratie metadata kan worden gerepresenteerd door XML, Java annotaties, of Java code. Het volgende diagram geeft een high-level beeld van hoe Spring werkt. De Spring IoC container maakt gebruik van Java POJO classes en configuratie metadata om een volledig geconfigureerd en uitvoerbaar systeem of applicatie te produceren.
Spring biedt de volgende twee verschillende typen containers.
Sr.No. | Container & Beschrijving |
---|---|
1 | Spring BeanFactory Container
Dit is de eenvoudigste container die de basisondersteuning biedt voor DI en wordt gedefinieerd door de org.springframework.beans.factory.BeanFactory interface. De BeanFactory en aanverwante interfaces, zoals BeanFactoryAware, InitializingBean, DisposableBean, zijn nog steeds aanwezig in Spring met het oog op achterwaartse compatibiliteit met een groot aantal third-party frameworks die integreren met Spring. |
2 | Spring ApplicationContext Container
Deze container voegt meer bedrijfsspecifieke functionaliteit toe, zoals de mogelijkheid om tekstuele berichten uit een properties bestand op te lossen en de mogelijkheid om applicatie-events 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 BeanFactorycontainer, dus het wordt over het algemeen aanbevolen boven BeanFactory. BeanFactory kan nog steeds worden gebruikt voor lichtgewicht toepassingen zoals mobiele apparaten of applet-gebaseerde toepassingen waarbij het datavolume en de snelheid van belang zijn.