Jar - vkladanie zbierok

1. Úvod

V tomto tutoriáli si ukážeme, ako na to vstreknúť Java zbierky využívajúce jarný rámec.

Jednoducho povedané, ukážeme príklady pomocou Zoznam, Mapa, Nastaviť zberné rozhrania.

2. Zoznam S @Autowired

Vytvorme príklad fazule:

verejná trieda CollectionsBean {@Autowired private List nameList; public void printNameList () {System.out.println (nameList); }}

Tu sme vyhlásili zoznam mien majetok držať a Zoznam z String hodnoty.

V tomto príklade používame injekciu poľa pre zoznam mien. Preto sme dali @Autowired anotácia.

Ak sa chcete dozvedieť viac o vkladaní závislostí alebo o rôznych spôsoboch jeho implementácie, prečítajte si túto príručku.

Potom zaregistrujeme ZbierkyBean v triede konfiguračného nastavenia:

@Configuration verejná trieda CollectionConfig {@Bean verejné CollectionsBean getCollectionsBean () {vrátiť nový CollectionsBean (); } @Bean public List nameList () {return Arrays.asList ("John", "Adam", "Harry"); }}

Okrem registrácie ZbierkyBean, vložíme nový zoznam aj explicitnou inicializáciou a vrátením ako samostatného @Bean konfigurácia.

Teraz môžeme testovať výsledky:

ApplicationContext context = nový AnnotationConfigApplicationContext (CollectionConfig.class); CollectionsBean collectionsBean = context.getBean (CollectionsBean.class); collectionsBean.printNameList ();

Výstup metódy printNameList ():

[John, Adam, Harry]

3. Nastaviť S injektorom Constructor

Rovnaký príklad vytvoriť s Nastaviť zbierka, upravme ZbierkyBean trieda:

verejná trieda CollectionsBean {private Set nameSet; public CollectionsBean (sada reťazcov) {this.nameSet = reťazce; } public void printNameSet () {System.out.println (nameSet); }}

Tentokrát chceme použiť inicializáciu konštruktora na inicializáciu sady mien nehnuteľnosť. To si vyžaduje aj zmeny v konfiguračnej triede:

@Bean public CollectionsBean getCollectionsBean () {return new CollectionsBean (new HashSet (Arrays.asList ("John", "Adam", "Harry"))); }

4. Mapa S injekčným setrom

Podľa rovnakej logiky pridajme nameMap pole na vloženie mapy:

public class CollectionsBean {private Map nameMap; @Autowired public void setNameMap (mapa nameMap) {this.nameMap = nameMap; } public void printNameMap () {System.out.println (nameMap); }}

Tentokrát máme metódu setter, aby sme mohli použiť injekciu závislosti setter. Musíme tiež pridať Mapa inicializačný kód v konfiguračnej triede:

@Bean public Mapa nameMap () {Map nameMap = new HashMap (); nameMap.put (1, "John"); nameMap.put (2, "Adam"); nameMap.put (3, "Harry"); návrat nameMap; }

Výsledky po vyvolaní printNameMap () metóda:

{1 = Ján, 2 = Adam, 3 = Harry}

5. Vkladanie referencií fazule

Pozrime sa na príklad, kde ako prvky kolekcie vkladáme odkazy na fazule.

Najprv si vytvoríme fazuľu:

public class BaeldungBean {private String name; // konštruktor}

A pridajte a Zoznam z BaeldungBean ako majetok do ZbierkyBean trieda:

public class CollectionsBean {@Autowired (required = false) súkromný zoznam beanList; public void printBeanList () {System.out.println (beanList); }}

Ďalej pre každú pridáme metódy továrne na konfiguráciu Java BaeldungBean element:

@Configuration public class CollectionConfig {@Bean public BaeldungBean getElement () {vrátiť nový BaeldungBean ("John"); } @Bean public BaeldungBean getAnotherElement () {vrátiť nový BaeldungBean ("Adam"); } @Bean public BaeldungBean getOneMoreElement () {vrátiť nový BaeldungBean ("Harry"); } // ďalšie výrobné metódy}

Nádoba Spring vstrekuje jednotlivé zrná fazule BaeldungBean typ do jednej zbierky.

Aby sme to otestovali, vyvoláme collectionsBean.printBeanList () metóda. Výstup zobrazuje názvy fazule ako prvky zoznamu:

[John, Harry, Adam]

Teraz, uvažujme o scenári, keď neexistuje a BaeldungBean. Ak nie je BaeldungBean zaregistrovaný v kontexte aplikácie, Spring vyvolá výnimku, pretože chýba požadovaná závislosť.

Môžeme použiť @Autowired (vyžadované = nepravdivé) označiť závislosť ako voliteľnú. Namiesto výnimky platí: beanList nebude inicializovaný a jeho hodnota zostane nulový.

Ak namiesto toho potrebujeme prázdny zoznam nulový, môžeme inicializovať beanList s novým ArrayList:

@Autowired (required = false) private List beanList = new ArrayList ();

5.1. Použitím @Objednať na triedenie fazule

Môžeme určiť poradie fazúľ pri vstrekovaní do zbierky.

Na tento účel používame @Objednať anotáciu a zadajte index:

@Configuration public class CollectionConfig {@Bean @Order (2) public BaeldungBean getElement () {return new BaeldungBean ("John"); } @Bean @Order (3) public BaeldungBean getAnotherElement () {return new BaeldungBean ("Adam"); } @Bean @Order (1) public BaeldungBean getOneMoreElement () {return new BaeldungBean ("Harry"); }}

Jarná nádoba najskôr vstrekne fazuli meno "Harry", pretože má najnižšiu hodnotu objednávky.

Potom vstrekne „John“, a nakoniec „Adam“ fazuľa:

[Harry, John, Adam]

Naučiť sa viac o @Objednať v tejto príručke.

5.2. Použitím @Qualifier na výber fazule

Môžeme použiť @Qualifier aby ste vybrali fazuľu, ktorá sa má vstreknúť do konkrétnej zbierky, ktorá zodpovedá @Qualifier názov.

Takto to používame pre miesto injekcie:

@Autowired @Qualifier ("CollectionsBean") súkromný zoznam beanList;

Potom označíme rovnakým @Qualifier fazuľa, ktorú chceme vstreknúť do Zoznam:

@Configuration public class CollectionConfig {@Bean @Qualifier ("CollectionsBean") public BaeldungBean getElement () {return new BaeldungBean ("John"); } @Bean public BaeldungBean getAnotherElement () {vrátiť nový BaeldungBean ("Adam"); } @Bean public BaeldungBean getOneMoreElement () {vrátiť nový BaeldungBean ("Harry"); } // ďalšie výrobné metódy}

V tomto príklade zadáme fazuľu s menom „John“ sa vstrekne do Zoznam menovaný „CollectionsBean“. Výsledky, ktoré tu testujeme:

ApplicationContext context = nový AnnotationConfigApplicationContext (CollectionConfig.class); CollectionsBean collectionsBean = context.getBean (CollectionsBean.class); collectionsBean.printBeanList ();

Z výstupu vidíme, že naša zbierka má iba jeden prvok:

[John]

6. Nastavenie prázdneho zoznamu ako predvolenej hodnoty

Predvolenú hodnotu pre vloženú vlastnosť List môžeme nastaviť ako prázdny zoznam pomocou znaku Collections.emptyList () statická metóda:

verejná trieda CollectionsBean {@Value ("$ {names.list:} # {T (java.util.Collections) .emptyList ()}")) súkromný zoznam nameListWithDefaultValue; public void printNameListWithDefaults () {System.out.println (nameListWithDefaultValue); }}

Ak to spustíme s kľúčom „names.list“, ktorý nie je inicializovaný prostredníctvom súboru vlastností:

collectionsBean.printNameListWithDefaults ();

Ako výstup dostaneme prázdny zoznam:

[ ]

7. Zhrnutie

V tejto príručke sme sa naučili, ako vložiť rôzne typy zbierok Java pomocou jarného rámca.

Preskúmali sme tiež injekciu s referenčnými typmi a ako ich vybrať alebo objednať v rámci zbierky.

Kompletný kód je ako obvykle k dispozícii v projekte GitHub.


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