Lastnosti Java so že vrsto let osnovni del razvoja Java. Tudi danes se lastnosti Java uporabljajo v priljubljenih okoljih in orodjih, kot sta Spring Framework in Ant. Večina lastnosti Jave, ki sem jih pogosto uporabljal, sledi paradigmi preizkušeno ime = vrednost. Od J2SE 5 pa je enostavno nalagati (in shranjevati) lastnosti v obliki XML.
Po mojih izkušnjah tipično datoteka lastnosti je videti nekako tako, kot je prikazano v nadaljevanju.
primeri.lastnosti
url.blog.dustin = // marxsoftware.blogspot.com/ url.javaworld = // www.javaworld.com/ url.coloradosoftwaresummit = // www.softwaresummit.com/ url.otn = // www.oracle.com/ technology / index.html url.rmoug = // www.rmoug.org/
J2SE 5 je olajšal nalaganje lastnosti iz XML (in shranjevanje lastnosti v XML). Dokumentacija API-ja na osnovi Javadoc za razred Properties obravnava obe obliki. Ta dokumentacija prikazuje DTD, ki se uporablja za definiranje slovnice XML Properties:
DTD nam pokaže, da morajo imeti lastnosti, shranjene v XML kot korenski element, ki se zahteva za dobro oblikovan XML in ima lahko nič ali eno
elementi, ugnezdeni v tej korenski oznaki. Iz tega DTD se tudi naučimo, da se imenuje nič do več elementov
dovoljeno in da
vstop
element lahko vsebuje podatkovno telo in en sam atribut z imenom tipko
. Na podlagi tega DTD bi lahko ročno napisali združljivo datoteko z lastnostmi, ki temelji na XML, še lažji način pa je, da jo beremo v tradicionalni datoteki lastnosti parov ime / vrednost in jo shranimo nazaj v obliki XML. To je točno tisto, kar je naslednji razred Java, LastnostiPrimeri, naredi.
PropertiesExamples.java
paket prahu v.lastnosti; uvoz java.io.FileInputStream; uvoz java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; uvoz java.util.Properties; javni razred PropertiesExamples {/ ** konstruktor brez argumentov. * / public PropertiesExamples () {} / ** * Pridobite tradicionalne lastnosti v formatu ime = vrednost. * * @param filePathAndName Pot in ime datoteke lastnosti (brez pripone * .properties). * @return Lastnosti, prebrane iz priložene datoteke. * / public Properties loadTraditionalProperties (končni niz filePathAndName) {lastnosti končnih lastnosti = nove lastnosti (); poskusite {final FileInputStream in = new FileInputStream (filePathAndName); properties.load (in); in.close (); } catch (FileNotFoundException fnfEx) {System.err.println ("Ne morem prebrati lastnosti iz datoteke" + filePathAndName); } catch (IOException ioEx) {System.err.println ("IOException je naletel med branjem iz" + filePathAndName); } vrni lastnosti; } / ** * Shranjene lastnosti shranite v obliki XML. * * @param sourceProperties Lastnosti, ki se shranijo v obliki XML. * @param ven OutputStream, kamor želite zapisati lastnosti, oblikovane v XML. * / public void storeXmlProperties (končne lastnosti sourceProperties, končni OutputStream out) {try {sourceProperties.storeToXML (out, "To je enostavno!"); } catch (IOException ioEx) {System.err.println ("NAPAKA pri poskusu shranjevanja lastnosti v XML!"); }} / ** * Shranjene lastnosti v formatu XML shranite v priloženo datoteko. * * @param sourceProperties Lastnosti, ki se shranijo v obliki XML. * @param pathAndFileName Pot in ime datoteke, v katero bodo zapisane lastnosti, oblikovane v XML. * / public void storeXmlPropertiesToFile (final Properties sourceProperties, final String pathAndFileName) {try {FileOutputStream fos = new FileOutputStream (pathAndFileName); storeXmlProperties (sourceProperties, fos); fos.close (); } catch (FileNotFoundException fnfEx) {System.err.println ("NAPAKA piše v" + pathAndFileName); } catch (IOException ioEx) {System.err.println ("NAPAKA pri poskusu zapisovanja lastnosti XML v datoteko" + pathAndFileName); }} / ** * Zažene glavne primere. * * @param argumenti Argumenti ukazne vrstice; nihče ni pričakoval. * / javni statični void glavni (končni argumenti String []) {final PropertiesExamples me = new PropertiesExamples (); končne lastnosti inputProperties = me.loadTraditionalProperties ("examples.properties"); me.storeXmlPropertiesToFile (inputProperties, "examples-xml.properties"); }}
Zgornji razred se bere v prej našteti datoteki z lastnostmi in nato zapiše nazaj v format XML. Število dejanskih vrstic kode, ki opravi večino dela, je majhno, a številne preverjene izjeme, povezane z vnosom / izhodom datoteke, znatno povečajo osnovo kode.
Ko se ta koda zažene, se ustvari naslednji izhod:
examples-xml.properties
To je enostavno! //www.softwaresummit.com/ //www.rmoug.org/ //marxsoftware.blogspot.com/ //www.javaworld.com/ //www.oracle.com/technology/index.html
Ta generirana datoteka XML vsebuje enake pare ime / vrednost kot tradicionalna datoteka z lastnostmi, prikazana prej, jo je mogoče brati kot tradicionalno različico z uporabo Properties.loadFromXML in vključuje komentar, ki je bil poslan metodi Properties.storeToXML.
Zaključek
Preprosto je naložiti lastnosti iz XML in jih shraniti kot XML. Vendar je XML v bistvu omejen na isto paradigmo parov ime / vrednost kot tradicionalne datoteke lastnosti. Zato hierarhične narave XML ne moremo izkoristiti za uporabo odnosov, ki so bolj zapleteni kot en ključ (ime) do ene vrednosti. Glavni razlog, da lahko uporabimo podporo Jave za lastnosti, ki temeljijo na XML, je, če je bil XML uporabljen za druga orodja ali ogrodja in so bile lastnosti v XML bolj dostopne drugemu orodju ali ogrodju.
To zgodbo, "Lastnosti Java v XML", je prvotno objavil JavaWorld.