@ Bestill om våren

1. Oversikt

I denne opplæringen skal vi lære om vårens @Rekkefølge kommentar. De @Rekkefølge kommentar definerer sorteringsrekkefølgen til en kommentert komponent eller bønne.

Den har et valgfritt verdiargument som bestemmer rekkefølgen på komponenten; standardverdien er Bestilt.LOWEST_PRECEDENCE. Dette markerer at komponenten har lavest prioritet blant alle andre bestilte komponenter.

Tilsvarende verdien Bestilt.HIGHEST_PRECEDENCE kan brukes til å overstyre høyeste prioritet blant komponenter.

2. Når skal du bruke @Rekkefølge

Før våren 4.0 ble den @Rekkefølge merknader ble bare brukt for utførelsesordren til AspectJ. Det betyr at rådene av høyeste ordre vil kjøre først.

Siden våren 4.0 støtter den bestilling av injiserte komponenter til en samling. Som et resultat vil Spring injisere de automatisk koblede bønnene av samme type basert på bestillingsverdien.

La oss utforske det med et raskt eksempel.

3. Hvordan bruke @Rekkefølge

Først av alt, la oss sette opp prosjektet vårt med relevant grensesnitt og klasser.

3.1. Grensesnittoppretting

La oss lage Vurdering grensesnitt som bestemmer klassifiseringen av et produkt:

offentlig grensesnitt vurdering {int getRating (); }

3.2. Komponentoppretting

Til slutt, la oss lage tre komponenter som definerer klassifiseringen av noen produkter:

@Component @Order (1) offentlig klasse Utmerket implementerer Vurdering {@Override public int getRating () {retur 1; }} @Component @Order (2) offentlig klasse God implementering Rangering {@Override public int getRating () {return 2; }} @Component @Order (Ordered.LOWEST_PRECEDENCE) public class Gjennomsnittlig implementering Rangering {@Override public int getRating () {retur 3; }}

Merk at Gjennomsnitt klasse har lavest prioritet på grunn av dens overstyrte verdi.

4. Testing av vårt eksempel

Inntil nå har vi laget alle nødvendige komponenter og grensesnitt for å teste @Rekkefølge kommentar. La oss nå teste det for å bekrefte at det fungerer som forventet:

offentlig klasse RatingRetrieverUnitTest {@Autowired private List ratings; @Test offentlig ugyldighet gittOrder_whenInjected_thenByOrderValue () {assertThat (ratings.get (0) .getRating (), er (equalTo (1))); assertThat (ratings.get (1) .getRating (), er (equalTo (2))); assertThat (ratings.get (2) .getRating (), er (equalTo (3))); }}

5. Konklusjon

Vi har lært om @Rekkefølge kommentar i denne raske artikkelen. Vi kan finne anvendelsen av @Rekkefølge i forskjellige bruksområder - hvor bestilling av de auto-kablede komponentene har betydning. Et eksempel er vårens forespørselsfiltre.

På grunn av sin innflytelse på injeksjonsprioriteten, kan det virke som om det også kan påvirke oppstartsrekkefølgen for singleton. Men i motsetning, avhengighetsforholdene og @Kommer an på erklæringer bestemmer oppstartsrekkefølgen for singleton.

Alle eksemplene som er nevnt i denne opplæringen, finner du på Github.


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