Spostamento di variabili statiche Java in XML

0

Ho lavorato su un piccolo progetto Java da solo per un reparto che non fa molto sviluppo di software ma principalmente di database.

Ho mostrato al mio capo il codice che ho scritto e ha visto che in alcune classi c'erano alcune variabili statiche. Poi mi ha detto di inserire le variabili statiche in XML per renderlo "più semplice".

Se n'è andato e non ho potuto chiedergli come li possa rendere gestibili. Se ne andrà per un paio di settimane.

So che questa potrebbe essere una domanda abbastanza vaga, ma quali potrebbero essere i motivi per cui mi direbbe di inserire variabili statiche in XML? E come faccio a farle?

In primo luogo, ho avuto qualcosa di simile:

private final static String[] ACCESS_EXTENSIONS = {"accdb", "mdb"};

Dopo che mi ha detto di inserire variabili statiche in un file XML, ho scritto un codice XML:

<input_filetypes>

    <filetype id = "access">
        <title>Access Database</title>
        <extension>accdb</extension>
        <extension>mdb</extension>
    </filetype>

    <filetype id = ....>
        ....
    </filetype>

    ......

</input_filetypes>

Ma questo mi ha portato alla creazione di una variabile String statica che contiene la posizione del mio file XML:

private final static String xmlFile = "location_of_my_xml_file";

Ho anche imparato a usare XPath per accedere ai dati nel mio XML, ma alla fine ho scritto un altro codice statico che è:

private final static String GET_ACCESS_EXTNS_EXP =
    "input_filetypes/filetype[@id='access']/extension";

Ora penso di aver peggiorato le cose. So che dovrei aspettare che lui torni a chiarire, ma è da molto tempo che passa, e penso che sia meglio se comincio a leggere mentre aspetti. Ho solo bisogno di idee su dove cominciare.

    
posta PuggyLongLegs 26.01.2016 - 16:33
fonte

2 risposte

2

Memorizzare esternamente la configurazione del programma consente di evitare di dover ricompilare il programma quando qualcosa cambia. Passa da databaseA a databaseB ? Modifica il file delle proprietà piuttosto che modificare i valori codificati e ricompilare dall'origine.

Inoltre, Java offre una classe come parte del suo ambiente runtime standard che facilita questo - il Properties classe. Questa classe può prendere un file .properties o un file .xml che corrisponde al dtd specificato in link ( è davvero piuttosto semplice - è lo stesso di quello della javadoc).

Con la classe Proprietà, la si carica, e quindi si può facilmente chiamare getProperty(String key) o getProperty(String key, String defaultValue) e ricavarne i valori. Questo è molto più semplice del caricamento dei valori da un file xml personalizzato e di tutte le elaborazioni xml o xpath che dovresti fare con esso. Inoltre, è una cosa conosciuta e più facile da ottenere.

Questo è il file delle proprietà.

access.extensions = accdb,mdb # where you might find an access database

E poi hai il corrispondente bit di Java ...

String[] extensions = prop.getproperty("access.extensions", "accdb").split(",");

per averlo letto. Questo rende il codice un po 'più auto-documentante, una salvaguardia dal non avere il file con un valore predefinito.

Se veramente volevi usare xml invece di un file di proprietà, sarebbe come:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
  <comment>Access Database Extensions</comment>
  <entry key="access.extensions">accdb,mdb</entry>
</properties>

Ma ancora una volta, il punto chiave è spostare i valori fuori dal codice e in file esterni con cui è più facile lavorare. E Java ha già gli strumenti per leggerli di nuovo nel sistema.

    
risposta data 26.01.2016 - 17:00
fonte
1

Inserirai tali variabili in un file XML per renderle configurabili . In altre parole, è possibile modificare i loro valori senza ricompilare il programma.

Ulteriori letture
file di configurazione XML
Come facilmente caricare un file di configurazione basato su XML in una classe Java

    
risposta data 26.01.2016 - 16:42
fonte

Leggi altre domande sui tag