Úvod do JiBX

1. Prehľad

JiBX je nástroj na viazanie údajov XML na objekty Java. Poskytuje solídny výkon v porovnaní s inými bežnými nástrojmi, ako je JAXB.

JiBX je tiež pomerne flexibilný v porovnaní s inými nástrojmi Java-XML, pričom používa definície väzieb na oddelenie štruktúry Java od reprezentácie XML, takže je možné každý nezávisle meniť.

V tomto článku preskúmame rôzne spôsoby, ktoré poskytuje JiBX na väzbu XML na objekty Java.

2. Komponenty JiBX

2.1. Záväzný definičný dokument

Dokument definície väzby určuje, ako sa vaše objekty Java prevádzajú do alebo z XML.

Kompilátor väzieb JiBX naberá ako vstup jednu alebo viac definícií väzieb spolu so skutočnými súbormi triedy. Zostavuje definíciu väzby do bajtkódu Java pridaním do súborov triedy. Po rozšírení súborov triedy týmto kompilovaným definičným kódom väzby sú pripravené na prácu s runtime JiBX.

2.2. Náradie

Budeme používať tri hlavné nástroje:

  • BindGen - vygenerovať väzobné a zodpovedajúce definície schém z kódu Java
  • CodeGen - vytvoriť kód Java a definíciu väzby zo schémy XML
  • JiBX2Wsdl - vytvoriť definíciu väzby a zodpovedajúci WSDL spolu s definíciou schémy z existujúceho kódu Java

3. Konfigurácia Maven

3.1. Závislosti

Musíme pridať závislosť spustenia jibx do súboru pom.xml:

 org.jibx jibx-run 1.3.1 

Najnovšiu verziu tejto závislosti nájdete tu.

3.2. Pluginy

Aby sme mohli v JiBX vykonať rôzne kroky, ako je generovanie kódu alebo generovanie väzieb, je potrebné vykonať konfiguráciu maven-jibx-plugin v pom.xml.

V prípade, že musíme vychádzať z kódu Java a vygenerovať definíciu väzby a schémy, nakonfigurujme doplnok:

 org.jibx maven-jibx-plugin ... src / main / resources * -binding.xml template-binding.xml pravé väzby procesných tried 

Keď máme schému a vygenerujeme kód Java a definíciu väzby, znak maven-jibx-plugin je nakonfigurovaný s informáciami o ceste k súboru schémy a ceste k adresáru zdrojového kódu:

 org.jibx maven-jibx-plugin ... generate-java-code-from-schema schema-codegen src / main / jibx customer-schema.xsd true compile-binding bind target / generated-sources true true true 

4. Záväzné definície

Záväzné definície sú hlavnou súčasťou JiBX. Súbor základnej väzby určuje mapovanie medzi poľami objektov XML a Java:

  ...   

4.1. Mapovanie štruktúry

Vďaka mapovaniu štruktúry vyzerá štruktúra XML podobne ako štruktúra objektu:

  ...  ...   ...  

Zodpovedajúce triedy pre túto štruktúru budú:

verejná trieda Zákazník {súkromná osoba; ... // štandardné getre a setre} verejná trieda Osoba {private String priezvisko; ... // štandardní zakladatelia a zakladatelia} 

4.2. Zbierka a Pole Mapovania

Väzba JiBX poskytuje jednoduchý spôsob práce so zbierkou objektov:

    ...  ... 

Pozrime sa na príslušné mapovanie objektov Java:

public class Order {List addressList = new ArrayList (); ... // zakladatelia a zakladatelia} verejná statická trieda Adresa {private Názov reťazca; ... // štandardný getter a setter}

4.3. Pokročilé mapovania

Doteraz sme videli základnú definíciu mapovania. Mapovanie JiBX poskytuje rôzne príchute mapovania, ako je abstraktné mapovanie a dedičnosť mapovania.

Pozrime sa, ako môžeme definovať abstraktné mapovanie:

   ...          

Pozrime sa, ako sa to viaže na objekty Java:

verejná trieda Zákazník {súkromná osoba; ... súkromný Telefón domovPhone; súkromná telefónna kanceláriaPhone; // štandardné getre a setre}

Tu sme zadali viac Telefón polia v Zákazník trieda. The Telefón sám o sebe je opäť POJO:

verejná trieda Telefón {súkromné ​​číslo reťazca; // štandardné getre a setre}

Okrem bežných mapovaní môžeme definovať aj rozšírenia. Každé rozšírenie mapovania odkazuje na niektoré základné mapovanie. V čase zoradenia rozhoduje skutočný typ objektu, ktoré mapovanie XML sa použije.

Pozrime sa, ako rozšírenia fungujú:

    ...   ...  ... 

Pozrime sa na zodpovedajúce objekty Java:

public class Identity {private long customerId; // štandardné getre a setre}

5. Záver

V tomto rýchlom článku sme preskúmali rôzne spôsoby, ako môžeme použiť JiBX na konverziu XML na / z objektov Java. Tiež sme videli, ako môžeme použiť záväzné definície na prácu s rôznymi znázorneniami.

Celý kód tohto článku je k dispozícii na GitHub.


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