Čo je jarná fazuľa?

1. Prehľad

Bean je kľúčovým konceptom jarného rámca. Pochopenie tohto pojmu je teda zásadné pre to, aby sa rámec dostal do úzadia a aby ho bolo možné efektívne využívať.

Bohužiaľ na jednoduchú otázku - čo to vlastne jarná fazuľa je, nie sú jasné odpovede. Niektoré vysvetlenia idú na tak nízku úroveň, že premeškajú celkový obraz, iné sú príliš neurčité.

Tento výukový program sa pokúsi objasniť túto tému a začať popisom v oficiálnej dokumentácii.

2. Definícia fazule

Tu je definícia fazule v dokumentácii Spring Framework:

Na jar sa objekty, ktoré tvoria chrbticu vašej aplikácie a ktoré spravuje kontajner Spring IoC, nazývajú fazuľa. Fazuľa bean je objekt, ktorý je inštancovaný, zostavený a inak spravovaný kontajnerom Spring IoC.

Táto definícia je stručná a smeruje k veci, chýba však dôležitá vec - jarný kontajner IoC. Poďme do králičej nory, aby sme zistili, čo to je a aké výhody prináša.

3. Obrátenie kontroly

Jednoducho povedané, inverzia riadenia alebo skrátene IoC je proces, v ktorom objekt definuje svoje závislosti bez toho, aby ich vytvoril. Tento objekt deleguje úlohu vytvárania takýchto závislostí na kontajner IoC.

Začnime s vyhlásením niekoľkých doménových tried pred ponorom do IoC.

3.1. Triedy domén

Predpokladajme, že máme deklaráciu triedy:

public class Company {private Address address; verejná spoločnosť (adresa) {this.address = adresa; } // getter, setter a ďalšie vlastnosti}

Táto trieda potrebuje spolupracovníka typu Adresa:

verejná trieda Adresa {private String street; súkromné ​​int číslo; verejná adresa (ulica reťazca, číslo int) {this.street = ulica; this.number = number; } // zakladatelia a zakladatelia}

3.2. Tradičný prístup

Za normálnych okolností vytvárame objekty pomocou konštruktorov ich tried:

Adresa adresa = nová adresa ("High Street", 1000); Spoločnosť spoločnosť = nová spoločnosť (adresa);

Tento prístup nemá chybu, ale nebolo by pekné spravovať závislosti lepšie?

Predstavte si aplikáciu s desiatkami alebo dokonca stovkami tried. Niekedy chceme zdieľať jednu inštanciu triedy v celej aplikácii, inokedy potrebujeme samostatný objekt pre každý prípad použitia atď.

Správa takého množstva objektov nie je nič iné ako nočná mora. Tu prichádza na pomoc inverzia kontroly.

Namiesto samostatného budovania závislostí môže objekt načítať svoje závislosti z kontajnera IoC. Všetko, čo musíme urobiť, je poskytnúť kontajneru príslušné metaúdaje konfigurácie.

3.3. Konfigurácia fazule

Najskôr si ozdobíme Spoločnosť trieda s @ Komponent anotácia:

@Component public class Company {// tento text je rovnaký ako predtým}

Tu je konfiguračná trieda poskytujúca fazulové metadáta do kontajnera IoC:

@Configuration @ComponentScan (basePackageClasses = Company.class) verejná trieda Konfigurácia {@Bean verejná adresa getAddress () {vrátiť novú adresu ("High Street", 1000); }}

Trieda konfigurácie vytvorí fazuľu typu Adresa. Nesie tiež @ComponentScan anotácia, ktorá dáva kontajneru pokyn, aby vyhľadal fazuľu v balíčku obsahujúcom Spoločnosť trieda.

Keď kontajner Spring IoC vytvára objekty týchto typov, všetky objekty sa nazývajú Spring beans, pretože sú spravované kontajnerom IoC.

3.4. IoC v akcii

Pretože sme definovali fazuľa v konfiguračnej triede, budeme potrebovať inštanciu súboru AnnotationConfigApplicationContext triedy na zostavenie kontajnera:

ApplicationContext context = nový AnnotationConfigApplicationContext (Config.class);

Rýchly test overí existenciu a vlastnosti nehnuteľností našich fazúľ:

Spoločnosť company = context.getBean ("spoločnosť", Company.class); assertEquals ("High Street", company.getAddress (). getStreet ()); assertEquals (1000, company.getAddress (). getNumber ());

Výsledok dokazuje, že kontajner IoC vytvoril a inicializoval fazuľa správne.

4. Záver

Tento tutoriál poskytol stručný popis jarných bôbov a ich vzťahu k kontajneru IoC.

Kompletný zdrojový kód tohto tutoriálu nájdete na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found