Vejledning til Spring BeanFactory

1. Introduktion

Denne artikel vil fokusere på udforskning af Spring BeanFactory API.

BeanFactory-interface giver en enkel, men alligevel fleksibel konfigurationsmekanisme til at styre objekter af enhver art via Spring IoC-containeren. Lad os se på nogle grundlæggende, inden vi dykker dybt ned i denne centrale Spring API.

2. Grundlæggende - Bønner og containere

Kort sagt, bønner er java-objekter, der danner rygraden i en Spring-applikation og styres af Spring IoC-container. Bortset fra at blive administreret af containeren er der ikke noget særligt ved en bønne (i alle andre henseender er det et af mange objekter i applikationen).

Springcontaineren er ansvarlig for at instantere, konfigurere og samle bønnerne. Containeren får sine oplysninger om, hvilke objekter der skal instantieres, konfigureres og administreres ved at læse konfigurationsmetadata, vi definerer til applikationen.

3. Maven-afhængigheder

Lad os tilføje den krævede Maven-afhængighed til pom.xml fil. Vi bruger Spring Beans afhængighed til at oprette BeanFactory:

 org.springframework spring-beans 5.2.8.RELEASE 

4. Den BeanFactory Interface

Det er interessant at starte med at kigge på definitionen af ​​grænsefladen i org.springframework.bønner.fabrik pakke og diskutere nogle af dens vigtige API'er her.

4.1. Det getBean () API'er

Forskellige versioner af getBean () metode returnerer en forekomst af den specificerede bønne, som kan deles eller være uafhængig på tværs af applikationen.

4.2. Det indeholderBønne () API

Denne metode bekræfter, om denne bønnefabrik indeholder en bønne med det givne navn. Mere specifikt bekræfter det, om getBean (java.lang.String) i stand til at opnå en bønneinstans med det givne navn.

4.3. Det isSingleton () API

Det erSingleton API kan bruges til forespørgsel, hvis denne bønne er en delt singleton. Det er hvis getBean (java.lang.String) vil altid returnere den samme forekomst.

4.4. Det isPrototype () API

Denne API vil bekræfte, om getBean (java.lang.String) returnerer uafhængige forekomster - hvilket betyder en bønne konfigureret med prototypens omfang eller ej.

Det vigtige at bemærke er, at denne metode vender tilbage falsk angiver ikke klart et enkelt objekt. Det angiver ikke-uafhængige forekomster, som også kan svare til andre anvendelsesområder.

Vi er nødt til at bruge isSingleton (java.lang.String) operation for eksplicit at kontrollere for en delt singleton-forekomst.

4.5. Andre API'er

Mens isTypeMatch (String name, Class targetType) metode kontrollerer, om bønnen med det givne navn matcher den angivne type, getType (strengnavn) er nyttig til at identificere bønnetypen med det givne navn.

Langt om længe, getAliases (strengnavn) returner aliaserne for det givne bønnenavn, hvis der er nogen.

5. BeanFactory API

BeanFactory har bønnedefinitioner og instantierer dem, når klientapplikationen beder om det - hvilket betyder:

  • Den tager sig af en bønnes livscyklus ved at instantiere den og kalde passende destruktionsmetoder
  • Det er i stand til at skabe associering mellem afhængigt objekt, mens det instantieres
  • Det er vigtigt at påpege det BeanFactory understøtter ikke den annotationsbaserede afhængighedsinjektion, mens ApplicationContext, gør et supersæt af BeanFactory

Læs en applikationskontekst for at finde ud af, hvad den kan gøre ekstra.

6. Definition af bønnen

Lad os definere en simpel bønne:

offentlig klassemedarbejder {privat strengnavn; privat int alder // standardkonstruktører, getters og settere}

7. Konfiguration af BeanFactory med XML

Vi kan konfigurere BeanFactory med XML. Lad os oprette en fil bønne fabrikseksempel.xml:

Bemærk, at vi også har oprettet et alias til medarbejder bønne.

8. BeanFactory med ClassPathResource

ClassPathResource tilhører org.springframework.core.io pakke. Lad os køre en hurtig test og initialisere XmlBeanFactory ved brug af ClassPathResource som vist nedenfor:

public class BeanFactoryWithClassPathResourceTest {@Test public void createBeanFactoryAndCheckEmployeeBean () {Resource res = new ClassPathResource ("beanfactory-example.xml"); BeanFactory fabrik = ny XmlBeanFactory (res); Medarbejder emp = (Medarbejder) factory.getBean ("medarbejder"); assertTrue (factory.isSingleton ("medarbejder")); assertTrue (factory.getBean ("medarbejder") eksempel på ansat); assertTrue (fabrik.isTypeMatch ("medarbejder", medarbejder.klasse)); assertTrue (factory.getAliases ("medarbejder"). længde> 0); }}

9. Konklusion

I denne hurtige artikel lærte vi om de vigtigste metoder foråret BeanFactory API-tilbud og et eksempel for at illustrere konfigurationen og dens anvendelse.

Koden, der understøtter disse eksempler, er tilgængelig på GitHub.