Sprievodca po Spring BeanFactory

1. Úvod

Tento článok sa zameria na skúmanie API Spring BeanFactory.

Rozhranie BeanFactory poskytuje jednoduchý, ale flexibilný konfiguračný mechanizmus na správu objektov akejkoľvek povahy prostredníctvom kontajnera Spring IoC. Pozrime sa na niektoré základné informácie, skôr ako sa ponoríme hlboko do tohto centrálneho rozhrania Spring API.

2. Základy - fazuľa a nádoby

Jednoducho povedané, fazuľa je java objekt, ktorý tvorí chrbticu aplikácie Spring a je spravovaný kontajnerom Spring IoC. Okrem toho, že je spravovaný kontajnerom, na fazuli nie je nič zvláštne (vo všetkých ostatných ohľadoch je to jeden z mnohých objektov v aplikácii).

Nádoba Spring je zodpovedná za vytvorenie inštancie, konfiguráciu a zostavenie fazule. Kontajner získava svoje informácie o tom, ktoré objekty sa majú inštancovať, konfigurovať a spravovať, a to načítaním metadát konfigurácie, ktoré definujeme pre aplikáciu.

3. Závislosti Maven

Pridajme požadovanú závislosť Maven do pom.xml spis. Na nastavenie BeanFactory použijeme závislosť Spring Beans:

 org.springframework spring-beans 5.2.8.RELEASE 

4. The BeanFactory Rozhranie

Je zaujímavé začať tým, že sa pozrieme na definíciu rozhrania v org.springframework.beans.factory balíka a tu rozoberieme niektoré z jeho dôležitých rozhraní API.

4.1. The getBean () API

Rôzne verzie getBean () metóda vráti inštanciu zadaného objektu bean, ktorý môže byť zdieľaný alebo nezávislý v celej aplikácii.

4.2. The containsBean () API

Táto metóda potvrdzuje, či táto továreň na fazule obsahuje fazuľu s uvedeným menom. Konkrétnejšie potvrdzuje, či getBean (java.lang.String) schopný získať fazuľovú inštanciu s daným menom.

4.3. The isSingleton () API

The isSingleton Na zistenie, či je tento objekt typu bean zdieľaný singleton, je možné použiť API. To je ak getBean (java.lang.String) vráti vždy tú istú inštanciu.

4.4. The isPrototype () API

Toto API potvrdí, či getBean (java.lang.String) vráti nezávislé inštancie - to znamená fazuľa nakonfigurovaná s rozsahom prototypu alebo nie.

Je dôležité si uvedomiť, že táto metóda sa vracia nepravdivé jasne neoznačuje jediný objekt. Označuje nesamostatné prípady, ktoré môžu zodpovedať aj iným rozsahom.

Musíme použiť isSingleton (java.lang.String) operácia na výslovnú kontrolu zdieľanej inštancie jednotlivca.

4.5. Ostatné API

Kým isTypeMatch (názov reťazca, trieda targetType) metóda kontroluje, či sa fazuľa s daným menom zhoduje so zadaným typom, getType (názov reťazca) je užitočné pri identifikácii typu fazule s krstným menom.

Nakoniec getAliases (názov reťazca) vráti aliasy pre dané meno fazule, ak existujú.

5. BeanFactory API

BeanFactory obsahuje definície fazule a vytvára ich inštancie vždy, keď o to klientská aplikácia požiada - čo znamená:

  • Postará sa o životný cyklus fazule tak, že ju vytvorí inštanciou a vyvolá príslušné metódy ničenia
  • Je schopný vytvárať asociácie medzi závislými objektmi a vytvárať ich inštancie
  • Je dôležité to zdôrazniť BeanFactory nepodporuje Vkladanie závislostí založených na anotáciách, zatiaľ čo ApplicationContext, to je nadmnožina BeanFactory

Prečítajte si kontext aplikácie, aby ste zistili, čo môže urobiť navyše.

6. Definovanie fazule

Definujme jednoduchú fazuľu:

public class Employee {private String name; súkromný int vek; // štandardné konštruktory, getre a setre}

7. Konfigurácia BeanFactory s XML

Môžeme nakonfigurovať BeanFactory s XML. Vytvorme súbor fazuľa factory-example.xml:

Upozorňujeme, že sme tiež vytvorili alias pre zamestnanec fazuľa.

8. BeanFactory s ClassPathResource

ClassPathResource patrí do org.springframework.core.io balíček. Spustíme rýchly test a inicializujeme XmlBeanFactory použitím ClassPathResource ako je uvedené nižšie:

public class BeanFactoryWithClassPathResourceTest {@Test public void createBeanFactoryAndCheckEmployeeBean () {Resource res = new ClassPathResource ("beanfactory-example.xml"); BeanFactory factory = nový XmlBeanFactory (res); Zamestnanec emp = (zamestnanec) factory.getBean ("zamestnanec"); assertTrue (factory.isSingleton ("zamestnanec")); assertTrue (factory.getBean ("zamestnanec") inštancia zamestnanca); assertTrue (factory.isTypeMatch ("zamestnanec", Employee.class)); assertTrue (factory.getAliases ("zamestnanec"). dĺžka> 0); }}

9. Záver

V tomto rýchlom článku sme sa dozvedeli o hlavných metódach jari BeanFactory Ponuky API a príklad na ilustráciu konfigurácie a jej použitia.

Kód podporujúci tieto príklady je k dispozícii na stránkach GitHub.