Rövid útmutató a tavaszi MVC mátrixváltozókhoz
1. Áttekintés
Az RFC 3986 URI specifikáció az URI elérési útjának paramétereit név-érték párokként határozta meg. A mátrixváltozók egy Spring által megfogalmazott kifejezés és alternatív megvalósítás az URI útvonal paramétereinek átadására és elemzésére.
A mátrix változók támogatása a Spring MVC 3.2-ben vált elérhetővé, és ennek célja egyszerűsítse a kéréseket nagy számú paraméterrel.
Ebben a cikkben megmutatjuk, hogyan egyszerűsíthetjük azokat a komplex GET kéréseket, amelyek változó vagy opcionális útvonal-paramétereket használnak az URI különböző elérési útvonalain belül.
2. Konfiguráció
A Spring MVC Matrix Variables engedélyezéséhez kezdjük a konfigurációval:
@Configuration public class A WebConfig végrehajtja a WebMvcConfigurer {@Orride public void configurePathMatch (PathMatchConfigurer configurer) {UrlPathHelper urlPathHelper = new UrlPathHelper (); urlPathHelper.setRemoveSemicolonContent (hamis); configurer.setUrlPathHelper (urlPathHelper); }}
Ellenkező esetben alapértelmezés szerint le vannak tiltva.
3. A mátrixváltozók használata
Ezek a változók az útvonal bármely részén megjelenhetnek, és az egyenlő karaktert (“=”) az értékek megadására, a pontosvesszőt (‘;’) pedig az egyes mátrixváltozók elhatárolására használják. Ugyanazon az úton megismételhetjük ugyanazt a változó nevét, vagy különálló értékeket különíthetünk el a vessző (‘,’) segítségével.
Példánkban van egy vezérlő, amely információkat nyújt az alkalmazottakról. Minden alkalmazottnak van egy munkaterülete, és mi az adott tulajdonság alapján kereshetünk. A következő kérés használható keresésre:
// localhost: 8080 / spring-mvc-java-2 / workerArea / workingArea = rh, informatics, admin
vagy így:
// localhost: 8080 / spring-mvc-java-2 / workerArea / workingArea = rh; workingArea = informatika; workingArea = admin
Amikor ezekre a változókra szeretnénk hivatkozni a Spring MVC-ben, akkor használnunk kell az annotációt @MatrixVariable.
Példáinkban a Munkavállaló osztály:
public class Alkalmazott {private long id; privát karakterlánc neve; privát karakterlánc contactNumber; // szabványos beállítók és szerelők}
És a Vállalat osztály:
nyilvános osztály Társaság {private long id; privát karakterlánc neve; // szabványos beállítók és szerelők}
Ez a két osztály megköti a kérés paramétereit.
4. A mátrix változó tulajdonságainak meghatározása
Megadhatjuk a változó kötelező vagy alapértelmezett tulajdonságait. A következő példában a elérhetőség szükséges, tehát be kell vonni az utunkba, valami ilyesmi:
// localhost: 8080 / spring-mvc-java-2 / alkalmazottakContacts / contactNumber = 223334411
A kérelmet a következő módszerrel kezeljük:
@RequestMapping (value = "/ alkalmazottakKapcsolatok / {contactNumber}", metódus = RequestMethod.GET) @ResponseBody nyilvános ResponseEntity getEmployeeBycontactNumber (@MatrixVariable (kötelező = igaz) String contactNumber) {Lista alkalmazottak listája = új ArrayList (); ... adja vissza az új ResponseEntity-t(alkalmazottak listája, HttpStatus.OK); }
Ennek eredményeként megkapjuk az összes alkalmazottat, akik rendelkeznek a kapcsolattartási számmal 223334411.
5. Kiegészítő paraméter
A mátrixváltozók kiegészíthetik az útváltozókat.
Például egy alkalmazott után kutatjuk a nevét, de felvehetjük kapcsolattartójának kezdő számát is.
A keresésnek a következőnek kell lennie:
// localhost: 8080 / spring-mvc-java-2 / alkalmazottak / John; beginContactNumber = 22001
A kérelmet a következő módszerrel kezeljük:
@RequestMapping (érték = "/ alkalmazottak / {név}", módszer = RequestMethod.GET) @ResponseBody nyilvános ResponseEntity getEmployeeByNameAndBeginContactNumber (@PathVariable karakterlánc neve, @MatrixVariable karakterlánc beginContactNumber) {List alkalmazottak listája = új ArrayList (); ... adja vissza az új ResponseEntity-t (alkalmazottak listája, HttpStatus.OK); }
Ennek eredményeként megkapjuk az összes alkalmazottat, akik rendelkeznek a kapcsolattartási számmal 22001 vagy akinek a neve János.
6. Az összes mátrix változó kötése
Ha valamilyen okból meg akarjuk szerezni az útvonalon elérhető összes változót, akkor a Térkép:
// localhost: 8080 / spring-mvc-java-2 / workerData / id = 1; név = John; contactNumber = 2200112334
Ezt a kérést a következő módszerrel kezeljük:
@GetMapping ("workerData / {worker}") @ResponseBody public ResponseEntity
Természetesen korlátozhatjuk a kötést az út egy adott részének mátrixváltozóihoz. Például, ha van egy ilyen kérésünk:
// localhost: 8080 / spring-mvc-java-2 / companyEmployee / id = 2; név = Xpto / alkalmazottData / id = 1; név = John; contactNumber = 2200112334
És csak az összes változót szeretnénk megszerezni, amelyhez tartozik workerData; akkor bemeneti paraméterként ezt kell használnunk:
@RequestMapping (value = "/ companyEmployee / {company} / workerData / {worker}", method = RequestMethod.GET) @ResponseBody public ResponseEntity
7. Részleges kötés
Az egyszerűség mellett a rugalmasság egy másik nyereség, a mátrixváltozók sokféleképpen használhatók. Például minden változót megkaphatunk minden egyes útszakaszból. Vegye figyelembe a következő kérést:
// localhost: 8080 / spring-mvc-java-2 / companyData / id = 2; név = Xpto / workerData / id = 1; név = John; contactNumber = 2200112334
Ha csak a mátrix változót akarjuk tudni név a companyData szegmens, akkor bemeneti paraméterként a következőket kell használnunk:
@MatrixVariable (érték = "név", pathVar = "vállalat") Karakterlánc neve
8. Következtetés
Ez a cikk a mátrixváltozók felhasználásának néhány módját szemlélteti.
Elengedhetetlen annak megértése, hogy ez az új eszköz miként képes kezelni a túl összetett kérelmeket, vagy segít további paraméterek hozzáadásában a keresés körülhatárolásához.
Ezeknek a példáknak és kódrészleteknek a megvalósítása megtalálható egy GitHub projektben - ez egy Maven-alapú projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.