Bevezetés a JiBX-be
1. Áttekintés
A JiBX egy eszköz az XML adatok Java objektumokhoz való kötésére. Szolid teljesítményt nyújt más elterjedt eszközökhöz, például a JAXB-hez képest.
A JiBX meglehetősen rugalmas, összehasonlítva más Java-XML eszközökkel, kötelező meghatározásokkal választja le a Java struktúrát az XML ábrázolásról, így mindegyiket egymástól függetlenül lehet megváltoztatni.
Ebben a cikkben megvizsgáljuk a JiBX által biztosított különböző módszereket az XML Java objektumokhoz való kötésére.
2. A JiBX elemei
2.1. Kötelező meghatározási dokumentum
Az összerendelési definíciós dokumentum meghatározza, hogyan konvertálják a Java objektumait XML-be vagy onnan.
A JiBX kötési fordító egy vagy több kötelező meghatározást vesz be bemenetként, a tényleges osztályfájlokkal együtt. Összeállítja az összerendelés definícióját Java bytecode-ba az osztályfájlokhoz való hozzáadással. Miután az osztályfájlokat továbbfejlesztette ezzel a lefordított összerendelési definíciós kóddal, készen állnak a JiBX futásidejű használatára.
2.2. Eszközök
Három fő eszközt fogunk használni:
- BindGen - az összerendelés és az egyező sémadefiníciók előállítása Java kódból
- CodeGen - Java kód és kötelező érvényű definíció létrehozása XML sémából
- JiBX2Wsdl - az összerendelés definíciójának és a hozzá tartozó WSDL-nek, valamint egy séma-definíció elkészítéséhez a meglévő Java-kódból
3. Maven konfiguráció
3.1. Függőségek
Hozzá kell adnunk a jibx által futtatott függőséget a pom.xml:
org.jibx jibx-futtatás 1.3.1
A függőség legújabb verziója itt található.
3.2. Bővítmények
A JiBX különböző lépéseinek, például a kódgenerálás vagy a kötésgenerálás végrehajtásához konfigurálnunk kell maven-jibx-plugin ban ben pom.xml.
Konfiguráljuk a plugint abban az esetben, ha a Java kódból kell kiindulnunk, és elő kell állítanunk a kötés és séma definíciót:
org.jibx maven-jibx-plugin ... src / main / resources * -binding.xml template-binding.xml true process-class bind
Ha van sémánk, és létrehozzuk a Java kódot és az összerendelés definícióját, akkor a maven-jibx-plugin a séma fájl elérési útjának és a forráskód könyvtár elérési útjának információival van konfigurálva:
org.jibx maven-jibx-plugin ... java-code-from-schema-séma-codegen src / main / jibx customer-schema.xsd true fordítás-kötés megkötés cél / generált-források igaz igaz igaz
4. Kötelező meghatározások
A kötelező erejű meghatározások a JiBX központi részét képezik. Egy alapvető kötési fájl adja meg az XML és a Java objektum mezők közötti leképezést:
...
4.1. Struktúra feltérképezése
A struktúra leképezésével az XML struktúra hasonlóvá válik az objektum struktúrájához:
... ... ...
Ennek a szerkezetnek a megfelelő osztályai a következők lesznek:
nyilvános osztály Ügyfél {magánszemély személy; ... // szokásos getterek és beállítók} public class Person {private String vezetéknév; ... // szokásos mérőeszközök és beállítók}
4.2. Gyűjtemény és Sor Leképezések
A JiBX összerendelés egyszerű módot kínál a tárgyak gyűjteményével való munkavégzésre:
... ...
Lássuk a megfelelő leképező Java objektumokat:
public class Rendelés {List listList = new ArrayList (); ... // getterek és beállítók itt} public static class Cím {private String name; ... // szokásos mérőeszközök és beállítók}
4.3. Speciális leképezések
Eddig láttunk egy alapvető leképezési meghatározást. A JiBX leképezés a térképezés különböző ízeit biztosítja, mint például az absztrakt térképezés és az öröklés feltérképezése.
Lássuk, hogyan definiálhatunk egy absztrakt leképezést:
...
Lássuk, hogyan kötődik ez a Java objektumokhoz:
nyilvános osztály Ügyfél {magánszemély személy; ... saját telefon homePhone; privát Telefon irodaPhone; // szabványos mérőeszközök és beállítók}
Itt többször megadtuk Telefon mezők Vevő osztály. A Telefon maga is POJO:
nyilvános osztály Telefon {privát String szám; // szabványos mérőeszközök és beállítók}
A rendszeres leképezések mellett kiterjesztéseket is definiálhatunk. Minden kiterjesztés leképezés valamilyen alap leképezésre utal. A marsalláláskor a tényleges objektumtípus dönt arról, hogy mely XML leképezést alkalmazzák.
Nézzük meg, hogyan működnek a bővítmények:
... ... ...
Nézzük meg a megfelelő Java objektumokat:
public class Identity {private long customerId; // szabványos mérőeszközök és beállítók}
5. Következtetés
Ebben a rövid cikkben különféle módszereket tártunk fel, amelyek segítségével a JiBX-et felhasználhatjuk XML Java objektumokba / konvertálásához. Láttuk azt is, hogy hogyan használhatunk kötelező érvényű definíciókat a különböző ábrázolásokkal való együttműködésre.
A cikk teljes kódja elérhető a GitHub oldalon.