Gids voor de Spring BeanFactory

1. Inleiding

Dit artikel zal zich concentreren op het verkennen van de Spring BeanFactory API.

De BeanFactory-interface biedt een eenvoudig maar flexibel configuratiemechanisme om objecten van welke aard dan ook te beheren via de Spring IoC-container. Laten we eens kijken naar enkele basisprincipes voordat we diep in deze centrale Spring API duiken.

2. Basics - Bonen en containers

Simpel gezegd, bonen zijn de java-objecten die de ruggengraat vormen van een Spring-applicatie en worden beheerd door Spring IoC-container. Behalve dat het beheerd wordt door de container, is er niets speciaals aan een boon (in alle andere opzichten is het een van de vele objecten in de applicatie).

De Spring-container is verantwoordelijk voor het instantiëren, configureren en monteren van de bonen. De container krijgt zijn informatie over welke objecten moeten worden geïnstantieerd, geconfigureerd en beheerd door de configuratiemetagegevens te lezen die we voor de toepassing definiëren.

3. Maven afhankelijkheden

Laten we de vereiste Maven-afhankelijkheid toevoegen aan het pom.xml het dossier. We zullen afhankelijkheid van Spring Beans gebruiken om de BeanFactory op te zetten:

 org.springframework spring-beans 5.2.8.RELEASE 

4. Het BeanFactory Koppel

Het is interessant om te beginnen met de interfacedefinitie in org.springframework.beans.factory pakket en bespreek hier enkele van zijn belangrijke API's.

4.1. De getBean () API's

Verschillende versies van getBean () method retourneert een instantie van de opgegeven bean, die gedeeld of onafhankelijk kan zijn binnen de toepassing.

4.2. De bevatBean () API

Deze methode bevestigt of deze bonenfabriek een boon met de opgegeven naam bevat. Meer specifiek bevestigt het of het getBean (java.lang.String) in staat om een ​​bean-instantie te verkrijgen met de opgegeven naam.

4.3. De isSingleton () API

De isSingleton API kan worden gebruikt om te vragen of deze bean een gedeelde singleton is. Dat is als getBean (java.lang.String) retourneert altijd dezelfde instantie.

4.4. De isPrototype () API

Deze API zal bevestigen of getBean (java.lang.String) geeft onafhankelijke instanties terug - wat betekent dat een bean geconfigureerd is met de prototypebereik, of niet.

Het belangrijkste om op te merken is dat deze methode terugkeert false geeft niet duidelijk een singleton-object aan. Het geeft niet-onafhankelijke instanties aan, die ook met andere bereiken kunnen overeenkomen.

We moeten de isSingleton (java.lang.String) bewerking om expliciet te controleren op een gedeelde singleton-instantie.

4.5. Andere API's

Terwijl de isTypeMatch (Stringnaam, Class targetType) methode controleert of de boon met de opgegeven naam overeenkomt met het opgegeven type, getType (String naam) is handig bij het identificeren van het type boon met de opgegeven naam.

Tenslotte, getAliases (String naam) retourneer de aliassen voor de opgegeven bean-naam, indien aanwezig.

5. BeanFactory API

BeanFactory bevat bean-definities en instantieert ze wanneer daarom wordt gevraagd door de clienttoepassing - wat betekent:

  • Het zorgt voor de levenscyclus van een boon door deze te instantiëren en geschikte vernietigingsmethoden aan te roepen
  • Het is in staat om associaties te creëren tussen afhankelijke objecten terwijl ze instantiëren
  • Het is belangrijk om daarop te wijzen BeanFactory biedt geen ondersteuning voor de op annotatie gebaseerde afhankelijkheidsinjectie terwijl ApplicationContext, een superset van BeanFactory

Lees in Application Context wat het extra kan doen.

6. Het definiëren van de boon

Laten we een eenvoudige boon definiëren:

openbare klasse Werknemer {privé Stringnaam; privé int leeftijd; // standaard constructeurs, getters en setters}

7. Configureren van het BeanFactory met XML

We kunnen het BeanFactory met XML. Laten we een bestand maken bean factory-example.xml:

Merk op dat we ook een alias hebben gemaakt voor het werknemer Boon.

8. BeanFactory met ClassPathResource

ClassPathResource behoort tot de org.springframework.core.io pakket. Laten we een snelle test uitvoeren en initialiseren XmlBeanFactory gebruik makend van ClassPathResource zoals hieronder weergegeven:

openbare klasse BeanFactoryWithClassPathResourceTest {@Test openbare leegte createBeanFactoryAndCheckEmployeeBean () {Resource res = nieuwe ClassPathResource ("beanfactory-example.xml"); BeanFactory factory = nieuwe XmlBeanFactory (res); Werknemer emp = (Werknemer) factory.getBean ("werknemer"); assertTrue (factory.isSingleton ("werknemer")); assertTrue (factory.getBean ("werknemer") instantie van werknemer); assertTrue (factory.isTypeMatch ("werknemer", Employee.class)); assertTrue (factory.getAliases ("werknemer"). length> 0); }}

9. Conclusie

In dit korte artikel hebben we geleerd over de belangrijkste voorjaarsmethoden BeanFactory API-aanbiedingen en een voorbeeld om de configuratie en het gebruik ervan te illustreren.

De code die deze voorbeelden ondersteunt, is allemaal beschikbaar op GitHub.