@ 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.