@Rendelés tavasszal
1. Áttekintés
Ebben az oktatóanyagban megismerhetjük a Spring programot @Rendelés annotáció. A @Rendelés az annotáció meghatározza a jegyzetelt komponens vagy bab rendezési sorrendjét.
Van egy opcionális érték argumentuma, amely meghatározza az összetevő sorrendjét; az alapértelmezett érték Rendelt.LOWEST_PRECEDENCE. Ez azt jelzi, hogy a komponens a legkevesebb prioritással rendelkezik az összes többi rendezett komponens között.
Hasonlóképpen az érték Rendelt.HIGHEST_PRECEDENCE használható a komponensek közül a legnagyobb prioritás felülbírálására.
2. Mikor kell használni @Rendelés
A 4.0 tavasz előtt a @Rendelés az annotációt csak az AspectJ végrehajtási utasításhoz használták. Ez azt jelenti, hogy a legmagasabb rendű tanácsok futnak először.
A 4.0 tavasz óta támogatja az injektált alkatrészek gyűjtésbe rendezését. Ennek eredményeként a Spring az azonos típusú automatikus vezetékes babokat fogja beinjekciózni rendelési értékük alapján.
Fedezzük fel egy gyors példával.
3. Hogyan kell használni @Rendelés
Először állítsuk be projektünket a megfelelő interfésszel és osztályokkal.
3.1. Interfész létrehozása
Hozzuk létre a Értékelés felület, amely meghatározza a termék minősítését:
nyilvános felület Értékelése {int getRating (); }
3.2. Alkatrészek létrehozása
Végül hozzunk létre három összetevőt, amelyek meghatározzák egyes termékek minősítését:
@Component @Order (1) public class Kiválóan teljesíti a minősítést {@Orride public int getRating () {return 1; }} @Component @Order (2) public class Good implements Rating {@Orride public int getRating () {return 2; }} @Component @Order (Rendezve.LOWEST_PRECEDENCE) nyilvános osztály Végrehajtási átlagértékelés {@Orride public int getRating () {return 3; }}
Vegye figyelembe, hogy a Átlagos osztálynak van a legalacsonyabb prioritása felülbírált értéke miatt.
4. Példánk tesztelése
Eddig létrehoztuk az összes szükséges összetevőt és az interfészt a teszteléséhez @Rendelés annotáció. Most teszteljük, hogy megerősítsük-e, hogy a várt módon működik:
public class RatingRetrieverUnitTest {@Autowired private List értékelések; @Test public void givenOrder_whenInjected_thenByOrderValue () {assertThat (ratings.get (0) .getRating (), is (egyenlőTo (1))); assertThat (rating.get (1) .getRating (), is (egyenlőTo (2))); assertThat (rating.get (2) .getRating (), is (egyenlőTo (3))); }}
5. Következtetés
Megtudtuk a @Rendelés annotáció ebben a gyors cikkben. Megtalálhatjuk a @Rendelés különféle felhasználási esetekben - amikor az automatikus vezetékes alkatrészek sorrendje számít. Ilyen például a tavaszi kérésszűrők.
Az injekciós elsőbbségre gyakorolt hatása miatt úgy tűnhet, hogy befolyásolhatja a szingulett indítási sorrendet is. De ezzel szemben a függőségi kapcsolatok és @Attól függ deklarációk határozzák meg a szingleton indítási sorrendet.
Az ebben az oktatóanyagban említett összes példa megtalálható a Github oldalon.