@ Objednávka na jar

1. Prehľad

V tomto výučbe sa dozvieme niečo o jarných @Objednať anotácia. The @Objednať anotácia definuje poradie triedenia anotovanej zložky alebo fazule.

Má voliteľný argument hodnoty, ktorý určuje poradie komponentu; predvolená hodnota je Objednané.LOWEST_PRECEDENCE. To znamená, že komponent má spomedzi všetkých ostatných usporiadaných komponentov najnižšiu prioritu.

Podobne aj hodnota Objednané.HIGHEST_PRECEDENCE možno použiť na prepísanie najvyššej priority medzi komponentmi.

2. Kedy použiť @Objednať

Pred jarou 4.0 @Objednať anotácia sa použila iba pre príkaz na vykonanie AspectJ. To znamená, že najskôr sa spustí rada s najvyšším poradím.

Od jari 4.0 podporuje zoradenie vstrekovaných komponentov do zbierky. Výsledkom bude, že Spring vstrekne fazuľa s automatickým pripojením rovnakého typu na základe hodnoty ich objednávky.

Poďme to preskúmať na krátkom príklade.

3. Ako používať @Objednať

Najskôr nastavíme náš projekt s príslušným rozhraním a triedami.

3.1. Vytvorenie rozhrania

Vytvorme Hodnotenie rozhranie, ktoré určuje hodnotenie produktu:

verejné rozhranie Hodnotenie {int getRating (); }

3.2. Tvorba komponentov

Nakoniec vytvoríme tri komponenty, ktoré definujú hodnotenie niektorých produktov:

@Component @Order (1) verejná trieda Vynikajúce náradie Hodnotenie {@Override public int getRating () {návrat 1; }} @Component @Order (2) verejná trieda Dobré náradie Hodnotenie {@Override public int getRating () {návrat 2; }} @Component @Order (Ordered.LOWEST_PRECEDENCE) verejná trieda Priemerné náradie Hodnotenie {@Override public int getRating () {návrat 3; }}

Všimnite si, že Priemerná trieda má najnižšiu prioritu kvôli svojej prepísanej hodnote.

4. Testovanie nášho príkladu

Až doteraz sme na testovanie vytvorili všetky požadované komponenty a rozhranie @Objednať anotácia. Teraz to otestujme, aby sme potvrdili, že funguje podľa očakávania:

verejná trieda RatingRetrieverUnitTest {@Autowired súkromné ​​hodnotenie zoznamu; @Test public void givenOrder_whenInjected_thenByOrderValue () {assertThat (hodnotenie.get (0) .getRating (), je (rovná sa (1))); assertThat (hodnotenie.get (1) .getRating (), je (rovná sa (2))); assertThat (hodnotenie.get (2) .getRating (), je (rovná sa (3))); }}

5. Záver

Dozvedeli sme sa o @Objednať anotácia v tomto rýchlom článku. Nájdeme aplikáciu @Objednať v rôznych prípadoch použitia - keď záleží na poradí komponentov s automatickým pripojením. Jedným z príkladov sú filtre požiadaviek na jar.

Vzhľadom na jeho vplyv na prednosť v injekcii sa môže zdať, že by to mohlo mať vplyv aj na poradie spustenia jednotlivca. Ale naopak, vzťahy závislostí a @Záleží na vyhlásenia určujú poradie spustenia jednotlivca.

Všetky príklady uvedené v tomto výučbe nájdete na serveri Github.


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